全局variables在多个文件中
我有两个需要访问一个公共variables的源文件。 做这个的最好方式是什么? 例如:
source1.cpp:
int global; int function(); int main() { global=42; function(); return 0; }
source2.cpp:
int function() { if(global==42) return 42; return 0; }
variablesglobal的声明应该是静态的,extern,还是应该放在两个文件包含的头文件中?
全局variables应该在两个源文件包含的头文件中声明为extern
,然后只在其中一个源文件中定义:
COMMON.H
extern int global;
source1.cpp
#include "common.h" int global; int function(); int main() { global=42; function(); return 0; }
source2.cpp
#include "common.h" int function() { if(global==42) return 42; return 0; }
你添加一个“头文件”,描述模块source1.cpp的接口:
source1.h
#ifndef SOURCE1_H_ #define SOURCE1_H_ extern int global; #endif
source2.h
#ifndef SOURCE2_H_ #define SOURCE2_H_ int function(); #endif
并在每个使用此variables的文件中添加一个#include语句,并在variables中定义(重要)。
source1.cpp
#include "source1.h" #include "source2.h" int global; int main() { global=42; function(); return 0; }
source2.cpp
#include "source1.h" #include "source2.h" int function() { if(global==42) return 42; return 0; }
虽然没有必要,但我build议使用文件名source1.h来显示它描述模块source1.cpp的公共接口。 以同样的方式,source2.h描述了source2.cpp中可用的公共内容。
在一个文件中声明它在source1.cpp中,在第二个声明为
extern int global;
当然,你真的不想这样做,也许应该发表一个关于你想要达到什么的问题,这样的人可以给你其他的方式来实现它。