C++移动/删除符号

Tom*_*lny 1 c++ c++11

假设我有一个.cpp文件,我必须在其中包含一个声明某个符号的第三方头文件(让我们称之为div).我不需要这个符号,但我需要定义自己的div符号.但是,原始符号可能会被头文件的其他部分使用.是否可以从全局命名空间中删除符号(类似于undef宏)?

我想要这样的东西:

#include <string> //stdlib.h defines div symbol
//do some symbol removal magic here
std::string div;
Run Code Online (Sandbox Code Playgroud)

用gcc-4.7/clang和-std=c++11选项编译.

Gre*_*reg 8

您无法从定义它的命名空间中删除符号(包括全局命名空间).

div在自己的命名空间中包装自己的.


Lig*_*ica 5

基本上没有.

但正如其他人所说,你可以使用命名空间来获得与实际上本质上完全不同的符号相同的效果.