在C ++中跨多个文件使用相同的变量

时间:2010-03-30 11:51:54

标签: c++ variables

在更改某些代码的过程中,我将一些函数溢出到多个文件中。我有文件controls.cppdisplay.cpp,我希望能够访问两个文件中的同一组变量。我不介意初始化或声明它们的位置,只要两个文件中的函数都可以使用它们。

当函数在同一个文件中时,这不是一个问题,但现在看来几乎不可能在一小时的谷歌搜索和尝试各种事情。

5 个答案:

答案 0 :(得分:17)

在一个文件中定义变量,如:

type var_name;

并在其他文件中将其声明为全局,如:

extern type var_name;

答案 1 :(得分:6)

将这些变量用作extern 即。

extern int i;

在另一个文件中声明与普通全局变量相同...

int i;//global

答案 2 :(得分:4)

创建两个新文件:

  1. Globals.h之类的内容,并声明所有变量,例如:extern type name;
    • btw记得包括警卫。
  2. Globals.cpp之类的东西,并声明变量,如:type name;
  3. 然后在{:p>的顶部添加#include "Globals.h"

    • Globals.cpp
    • controls.cpp
    • display.cpp

    然后,您可能需要一些函数来初始化它们。

答案 3 :(得分:2)

基本上你所要做的就是在一个代码文件中声明变量一次,并在其他代码文件中将其声明为extern(确保在声明extern时不初始化它,或者某些编译器会忽略extern关键字,给你编译错误。)

最简单的方法是在头文件中使用宏,如:

#pragma once

#ifdef __MAIN__
    #define __EXTERN(type, name, value)     type name = value
#else
    #define __EXTERN(type, name, value)     extern type name;
#endif

然后在同一个头文件中声明您的变量,如:

__EXTERN(volatile int,  MyVolatileInteger,  0);

从项目中的任何一个文件中包含头文件,如:

#define __MAIN__
#include "Globals.h"

从其他所有内容中,只需简单地包含它,就像这样:

#include "Globals.h"
先生,你已经完成了。变量只声明一次,并在线初始化。这是非常易于维护的,并且省去了必须两次声明所有内容的麻烦。

答案 4 :(得分:-1)

您希望在多个编译单元(.cpp文件)中显示的所有声明都应该放入一个头文件中,该文件包含在需要使用变量,类型,类等的所有位置中。

这远比extern好,这基本上隐藏了你分享声明的意图。