在C语言,C++和中,所做的事情实际上是将被的文件内容原样复制到使用的文件中
因此在一个头文件中定义一个变量,然后该头文件被多个cpp文件包含后,包含该头文件的cpp文件实际上会各自拥有独立的同名变量(等同于分别在多个cpp文件中定义同名变量)
具体验证
在头文件test.h中定义静态变量 int a
//头文件test.h#pragma oncestatic int a;
在头文件t0.h中包含头文件test.h,并声明一个可以改变变量a的函数
//头文件t0.h#pragma oncevoid change();
//t0.cpp文件#include"test.h"#include
在main.cpp中包含test.h和t0.h
#include"test.h"#include"t0.h"using namespace::std;int main(int argc, char* argv[]){a = 200;change();cout << "in main" << " a = " << a << "&a = " << &a << endl;system("pause");return 0;}
运行结果为:
根据运行结果我们可以看出,两个cpp文件中的同名变量a实际上是只在自己头文件范围内有效的(有不同的地址,也就是等同于在各自的cpp中定义变量,该变量只在定义的cpp文件中有效)
在头文件中定义全局变量
【c++中在头文件中定义static变量】根据的性质,如果要在头文件中定义一个全局变量是不可以直接定义的 。正确的做法应该是在头文件中以声明一个全局变量,并在包含该头文件的其中一个源文件中定义该变量,这样其他文件就可以正常使用该全局变量了 。
- 建立中间表 在MySQL中建立多对多关系的映射
- 中国花椒种植注意事项
- 龙鱼鱼缸尺寸?
- java hashtable 初始化_Java中HashTable和HashMa
- 九一八事变发生在哪年 九·一八事变又称什么
- 如何监控员工电脑的聊天记录
- @Options注解和@Selectkey注解
- Dhrystone基准测试程序在Google Pixel4上运行跑分教程
- java 运行.jnlp文件,在Linux系统上执行/打开JNLP文件的方法
- python中路径操作