C ++中static
全局和非static
全局标识符之间有什么区别?
答案 0 :(得分:31)
静态将变量的范围限制为相同的 translation unit 静态全局变量具有内部链接 非静态全局变量具有外部链接。
答案 1 :(得分:8)
全局static
变量仅在变量所在的转换单元(即源文件)中可用。可以从其他源文件引用非静态全局变量。< / p>
答案 2 :(得分:3)
如果你不知道区别是什么,正确答案可能会让你更加困惑。简而言之,类的static
不适用于文件范围的静态。类的静态与常规变量基本相同,但必须通过在类前添加前缀来引用它们。文件范围的静态是仅对文件本地的常规变量。要了解这意味着什么,请尝试将两个具有相同名称的变量添加到单个项目中。您将收到链接器错误,因为有多个相同的符号。通过使符号静态,您将避免该问题,并且无法从文件外部访问变量的名称。
答案 3 :(得分:2)
全局非静态变量可从其他文件访问,而静态全局变量不是