21xrx.com
2024-12-27 19:14:03 Friday
登录
文章检索 我的文章 写文章
C++ 外部变量:如何在不同源文件中共享变量?
2023-07-03 08:21:02 深夜i     --     --
C++ 外部变量 共享变量 源文件

在C++中,外部变量是一种全局变量,是可以在不同源文件中访问和共享的。它们是在所有函数之外定义的,可以被程序中的任何函数访问。然而,在不同的源文件中定义和使用外部变量会涉及到一些特殊的问题,这篇文章将为您详细介绍如何在C++中实现不同源文件之间的外部变量共享。

### 定义外部变量

在C++中,外部变量可以在所有函数之外定义。为了将外部变量定义放置在单独的文件中,您可以使用以下语法:


// file1.cpp

int count;

这个简单的代码在文件中定义了一个名为count的外部变量。

### 在不同的源文件中使用外部变量

有几种方法可以在不同的源文件中使用外部变量:

#### 1. 使用extern

在主程序中,使用extern关键字声明外部变量。例如:


// main.cpp

#include <iostream>

extern int count;

int main()

  std::cout << "The value of count is: " << count;

  return 0;

在这个例子中,用extern关键字在main.cpp中声明了外部变量count,从而使得在其它的源文件中也可以引用这个变量。

#### 2. 使用头文件

另一种更好的方法是定义一个头文件,并在需要使用该变量的源文件中包含该头文件。例如:


// count.h

extern int count;

// main.cpp

#include <iostream>

#include "count.h"

int main()

  std::cout << "The value of count is: " << count;

  return 0;

// file1.cpp

#include "count.h"

int count;

在这个例子中,定义一个头文件count.h,它只有一个声明外部变量的声明语句。在main.cpp中包含这个头文件,这样它就可以引用count。file1.cpp中也包含该头文件,并在该源文件中定义了外部变量count。

#### 3. 使用命令行参数

如果外部变量的值可以通过命令行参数传递,那么也可以在不同的源文件中使用外部变量。例如:


// main.cpp

#include <iostream>

#include <cstdlib>

int main(int argc, char* argv[]){

  int count;

  if (argc > 1){

    count = std::atoi(argv[1]);

  } else

    count = 0;

  

  std::cout << "The value of count is: " << count;

  return 0;

}

// file1.cpp

#include <cstdlib>

int count;

void increase_count(){

  count++;

}

// file2.cpp

#include "file1.h"

extern int count;

int main(){

  increase_count();

  std::cout << "The value of count is: " << count;

  return 0;

}

在这个例子中,main.cpp通过命令行参数获取外部变量count的值。file1.cpp中定义了变量count,并定义了一个函数increase_count()来增加它。file2.cpp中通过include指令包含了file1.h文件,已加以使用increase_count()函数并输出count的值。

### 结论

通过上述三种方法,C++中可以声明并使用外部变量以在不同的源文件中共享变量。选择哪种方法取决于应用程序的结构和代码量,最好将其封装成一个函数来管理这种共享变量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复