32

C++ 中的全局标识符static和非全局标识符有什么区别?static

4

4 回答 4

35

静态将变量的范围限制在同一个翻译单元
静态全局变量具有内部链接非静态全局
变量具有外部链接

好读:
什么是外联和内联?

于 2012-10-31T16:05:29.703 回答
11

全局static变量仅在变量所在的翻译单元(即源文件)中可用。非静态全局变量可以从其他源文件中引用。

于 2012-10-31T16:05:40.503 回答
3

全局非静态变量可从其他文件访问,而静态全局变量则不可

于 2012-10-31T16:11:33.697 回答
3

如果您不知道有什么区别,正确的答案可能会让您更加困惑。简而言之,static类的 s 与文件范围内的静态无关。类的静态本质上与常规变量相同,但必须通过在它们前面加上类名来引用它们。文件范围内的静态变量是仅对文件本地的常规变量。要了解这意味着什么,请尝试将两个具有相同名称的变量添加到单个项目中。您将收到链接器错误,因为有多个相同的符号。通过使符号静态,您将避免问题和变量的名称将无法从文件外部访问。

于 2012-10-31T22:32:18.827 回答