相关疑难解决方法(0)

将#include包装在命名空间块中是个好主意吗?

我有一个C头,编写为C和C++编译(它只使用公共子集中的功能,并使用该extern "C"东西).

问题是,该头部在全局命名空间中声明了东西.我宁愿通常的原因避免这种情况.我想过这样做:

namespace foo {
#include <foo.h>
}
Run Code Online (Sandbox Code Playgroud)

这样做是个好主意吗?我是否有不包含编辑头文件的替代方法?

c++ namespaces include

40
推荐指数
2
解决办法
4380
查看次数

屏蔽#include在namespace {}块中?

编辑:我知道方法1本质上是无效的,可能会使用方法2,但我正在寻找最好的黑客或更好的解决方案来缓解猖獗的,可变的命名空间扩散.

我在一个名称空间中有多个具有不同依赖关系的类或方法定义,并且希望尽可能使用最少的命名空间块或显式scopings,但是将#include指令与尽可能最好的需要的定义分组.我从来没有看到任何迹象表明可以告诉任何预处理器从#include内容中排除命名空间{}作用域,但我在这里询问是否有类似的东西是可能的:(见底部解释为什么我想要死的东西简单)

// NOTE: apple.h, etc., contents are *NOT* intended to be in namespace Foo!

// would prefer something most this:
#pragma magic_namespace_backout(1) // FIXME: use actually existing directive
namespace Foo {

#include "apple.h"
B *A::blah(B const *x) { /* ... */ }

#include "banana.h"
int B::whatever(C const &var) { /* ... */ }

#include "blueberry.h"
void B::something() { /* ... */ }

} // namespace Foo
Run Code Online (Sandbox Code Playgroud)

...

// over this:
#include "apple.h"
#include "banana.h"
#include "blueberry.h"

namespace Foo { …
Run Code Online (Sandbox Code Playgroud)

c++ namespaces include

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

c++ ×2

include ×2

namespaces ×2