我刚刚加入了一个新的C++软件项目,我正在尝试理解这个设计.该项目经常使用未命名的命名空间.例如,类定义文件中可能会出现这样的情况:
// newusertype.cc
namespace {
const int SIZE_OF_ARRAY_X;
const int SIZE_OF_ARRAY_Y;
bool getState(userType*,otherUserType*);
}
newusertype::newusertype(...) {...
Run Code Online (Sandbox Code Playgroud)
可能导致使用未命名的命名空间的设计注意事项是什么?有哪些优点和缺点?
未命名的命名空间如何优于static关键字?
可能重复:
为什么使用未命名的命名空间以及它们有什么好处?
查看someones代码,这是他们声明的内容:
namespace {
struct myStruct {
int x;
int y;
} obj1;
}
Run Code Online (Sandbox Code Playgroud)
..在一个函数我看到它像这样使用:
myStruct& var = obj1;
Run Code Online (Sandbox Code Playgroud)
(注意namespace是匿名的.)
从我如何使用它,我无法弄清楚为什么它被声明和使用这样.
宣布这样做的做法有何不同?
另外,为什么指针是这样创建的而不是这里显示的传统样式.即myStruct*ptr;
谢谢!
我有一个TU,其全局功能不会被任何其他TU使用.我读到它声明它们static给了它们内部的联系,从优化的角度来看这是好的.但我想知道我应该使用它们的正确情况.当我知道它们不会在程序中的任何其他地方使用时,我是否应该始终给出全局函数/变量内部链接?