是否可以在另一个命名空间内声明全局命名空间中的变量或函数?目前我的代码看起来像这样。
namespace test {
//do stuff
}
//declare global stuff
namespace test{
//continue stuff
}
出现这个问题的原因是因为我在命名空间中使用#include
,但所包含代码的一部分需要在全局命名空间中。所以我不能在命名空间块之外打断或编码。
所以我想:
namespace {// do stuff
//declare global stuff
//do more stuff
}
现在我的代码看起来有点像:
namespace test{
void majorfcn1();
Void majorfcn2();
#include "minorfunctions.h"
}
如果它只有功能,那将没有问题。但在我的情况下,我在那里扔了一些其他的包括当然应该在全球空间。所以我没有把它们剪掉,而是希望我能把它们留在那里,用namespace global{}
或其他东西包围它们。
答案 0 :(得分:2)
答案是否定的。我建议您不要在命名空间内#include
。这不是传统的C ++编码实践。
你说你想:
namespace {// do stuff
//declare global stuff
//do more stuff
}
然后你可以这样做:
namespace {// do stuff
}
//declare global stuff
namespace {// do stuff
//do more stuff
}