我正在编写一个设置很少的简单程序.设置是config.h头文件中定义的静态变量.
例如,里面config.h:
static int setting1 = 10 ;
Run Code Online (Sandbox Code Playgroud)
在另一个文件中kkk.cpp,我有一个更改值的函数setting1:
void classA::functionA()
{
setting1=5;
classB.functionB();
}
Run Code Online (Sandbox Code Playgroud)
但是,在classB.functionB文件中定义的eee.cpp
void classB::functionB()
{
int hh=setting1;
printf("%d",hh);
}
Run Code Online (Sandbox Code Playgroud)
hh仍然是setting1(setting1 == 10)的旧值.
虽然它setting1是一个全局静态,它的价值是不是可以改变?为什么?
如果static在头文件中声明了命名空间范围变量,然后将该头文件包含在多个源文件中,则每个源文件中将包含该变量的一个实例.甲static命名空间范围变量具有内部连接.
你有几个选择:
在其中一个.cpp文件中声明变量
extern在头文件中声明变量,然后仅在其中一个.cpp文件中定义它
使用静态成员变量并在一个.cpp文件中定义它
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |