在更改某些代码的过程中,我将一些函数溢出到多个文件中。我有文件controls.cpp
和display.cpp
,我希望能够访问两个文件中的同一组变量。我不介意初始化或声明它们的位置,只要两个文件中的函数都可以使用它们。
当函数在同一个文件中时,这不是一个问题,但现在看来几乎不可能在一小时的谷歌搜索和尝试各种事情。
答案 0 :(得分:17)
在一个文件中定义变量,如:
type var_name;
并在其他文件中将其声明为全局,如:
extern type var_name;
答案 1 :(得分:6)
将这些变量用作extern
即。
extern int i;
在另一个文件中声明与普通全局变量相同...
int i;//global
答案 2 :(得分:4)
创建两个新文件:
Globals.h
之类的内容,并声明所有变量,例如:extern type name;
Globals.cpp
之类的东西,并声明变量,如:type name;
然后在{: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好,这基本上隐藏了你分享声明的意图。