在 cpp 文件中命名空间范围内"Private"变量
"Private" variable in namespace scope in cpp file
在源文件(不是头文件)中,我习惯于放置一些只有实现才能使用的状态:
//.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
变量,而使用static
extern
将在链接时失败。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 将数组的地址分配给变量并删除
- 为"adjacent"变量赋值时出现问题
- enum是C++中的宏变量还是整数变量
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 用C++中的一个变量定义一个常量
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 你能重载对象变量名本身返回的内容吗
- 内置函数可查看CPP中的成员变量
- 是否可以初始化不可复制类型的成员变量(或基类)
- 尝试通过多个向量访问变量时,向量下标超出范围
- 试图让变量检查数组中的某些内容
- Cpp-Tuple使用带有变量的get
- 将包含C样式数组的对象初始化为成员变量(C++)
- 当vector是tje全局变量时,c++中vector的内存管理
- 我是否必须在类中的所有变量C++设置为 private?
- 当变量在多个函数作用域中使用时,我应该在类 private 中声明该变量吗?
- 在 cpp 文件中命名空间范围内"Private"变量
- C++有没有办法创建'super private'变量?