明确声明全局命名空间

时间:2015-07-24 17:58:13

标签: c++

是否可以在另一个命名空间内声明全局命名空间中的变量或函数?目前我的代码看起来像这样。

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{}或其他东西包围它们。

1 个答案:

答案 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
}