一个广为人知的方法是先声明int globalVar = 0,然后再声明-where来使用它-- extern int globalVar;,但是对于来自用户定义类的对象,这对我来说不起作用!这是我所做的一个例子: #include "file2.h" list * x ; file2.cpp: extern list * x;
static关键字将全局变量的作用域限制为该转换单元。如果我在.h文件中使用static int x,并每隔一个文件包含该.h文件,那么它们不都属于同一个转换单元吗?那么,x不是处处可见吗?那么静态现在的作用是什么呢?
另外,有没有使用static const int x,其中x是全局变量?默认情况下,所有const全局变量不都是静态的吗?常量变量的作用域是否仅限于TU,即使它被限制在文件中的for循环中?
我试图将一个头文件和一个具有该类实际函数的.cpp文件链接到我的主cpp文件,但我得到了这个错误: c++ DataMembers.cpp -o DataMembers体系结构的未定义符号x86_64:_main in DataMembers-053507.o“猫::睡眠()”,引用自:_main in DataMembers-053507.o ld:未找到体系结构的符号x86_64 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用) make:* DataMembers