【发布时间】:2012-10-31 16:03:18
【问题描述】:
C++ 中static 全局标识符和非static 全局标识符有什么区别?
【问题讨论】:
-
“静态全局”——你的意思是什么?
-
@Andrzej 一个带有
static关键字前缀的全局类型。例如,static int x = 5;在全局范围内。
标签: c++ static global-variables identifier
C++ 中static 全局标识符和非static 全局标识符有什么区别?
【问题讨论】:
static 关键字前缀的全局类型。例如,static int x = 5; 在全局范围内。
标签: c++ static global-variables identifier
Static 将变量的范围限制为相同的translation unit。
静态全局变量具有内部链接。
非静态全局变量具有外部链接。
【讨论】:
extern有什么用?
extern 表示它是声明而不是定义,就像函数的原型一样。
extern。
全局static 变量仅在变量所在的翻译单元(即源文件)中可用。非静态全局变量可以从其他源文件中引用。
【讨论】:
static 可防止链接器从该翻译单元导出符号。
全局非静态变量可以从其他文件访问,而静态全局变量则不能
【讨论】:
如果你不知道有什么区别,正确的答案可能会让你更加困惑。简而言之,一个类的statics 与文件范围内的静态无关。类的静态本质上与常规变量相同,但必须通过在它们前面加上类名来引用它们。文件范围内的静态变量是仅对文件本地的常规变量。要理解这意味着什么,请尝试将两个具有相同名称的变量添加到单个项目中。您将收到链接器错误,因为有多个相同的符号。通过将符号设为静态,您将避免问题和变量名无法从文件外部访问。
【讨论】: