可能的重复:
C++ 中的静态变量 https://stackoverflow.com/questions/3698043/static-variables-in-c
// x.h
int i = 3;
// x1.cpp
#include"x.h"
//...
// x2.cpp
#include"x.h"
//...
上面的代码将给出链接器错误。但是如果我声明,
//x.h
static int i = 3;
它不会在 gcc 中给出链接器错误,即使我们有相同的#include
!我们是否创造了不同的static int i;
对于每一个.cpp
文件 ?它会导致任何静默链接错误(由于同名)吗?
当 C 代码被编译时,一次是一个“翻译单元”。早期,#includes 被扩展为引用文件的文本。所以你在静态情况下得到的相当于 x1.cpp 说static int i = 3;
和 x2.cpp 做同样的事情。和static
在这种情况下,大致意思是“不要与其他翻译单元共享此内容”。
所以是的,当你使用static
你正在做两个不同的i
彼此无关的变量。这不会导致链接错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)