【发布时间】:2012-10-24 10:42:33
【问题描述】:
假设我有一个.cpp 文件,其中我必须包含一个声明某个符号的第三方头文件(我们称之为div)。我不需要这个符号,但我需要定义我自己的div 符号。但是,原始符号可能会被头文件的其他部分使用。是否可以从全局命名空间中删除符号(类似于 undefing 宏)?
我想要这样的东西:
#include <string> //stdlib.h defines div symbol
//do some symbol removal magic here
std::string div;
使用带有-std=c++11 选项的gcc-4.7/clang 进行编译。
【问题讨论】:
-
为什么不在命名空间中的 lib 中声明名称?
-
因为这样我每次都必须使用命名空间名称来限定它,我宁愿避免这种情况。
-
除了懒惰之外,你不想使用命名空间还有其他原因吗?
-
而这种懒惰可能是您的第 3 方标头污染全局命名空间的原因......
-
所以你的反对意见是你不能用你的名字污染全局命名空间,因为标准库已经做到了。对不起,这里很少同情。
使用命名空间;这就是他们的目的。