gpt4 book ai didi

c++ - "Private"cpp 文件中命名空间范围内的变量

转载 作者:搜寻专家 更新时间:2023-10-31 02:18:08 25 4
gpt4 key购买 nike

在源文件(不是头文件)中,我习惯于放置一些只有实现才能使用的状态:

//.cpp

namespace foo{

someType bar;

//... functions and objects that might use bar ...

}

因为 bar 只在这个 cpp 文件中声明,其他代码文件不可能使用它,对吗?

但是请注意,我没有在它之前放置 static。不过,在这种情况下,这应该没什么区别吧?

没有static,唯一的区别是这个变量可以被另一个代码文件访问(并实际设置)如果在其他文件中——无论是头文件还是cpp——我有一个extern 声明相同的变量名? (当然,这个声明在同名的命名空间中)

因为我在代码库的其他任何地方都没有任何这样的 extern 声明,所以我认为我是否将其标记为 static 没有区别 --但我想确保我的想法是正确的。

最佳答案

你是对的,命名空间范围内变量的 static 仅控制来自其他翻译单元的变量的可见性(内部与外部链接)。除此之外,变量的行为将保持不变。例如,存储类 将保持静态。唯一的区别是没有 static 声明

namespace foo{
extern someType bar;
...
}

来自其他一些翻译单元将“连接”到您的 bar 变量,而使用 staticextern 将在链接时失败.

关于c++ - "Private"cpp 文件中命名空间范围内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34826408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com