是否可以恢复到"default"全局命名空间?
Is it possible to revert back to "default" global namespace?
基本上,我正在使用一些提供的具有以下格式的头文件:
#include <iostream>
using namespace std;
class bar
{
public:
void printSomething(void)
{
cout << "This is an example." << endl;
}
}
我的问题是,由于我无法修改提供的标头,因此如何去除文件中的std
命名空间并返回到默认的全局命名空间?我已经尝试了" using namespace ::;
"和" using namespace ;
",但编译器对其中任何一个都不满意。关于如何使用命名空间强制清理石板的任何想法?
你不能。这就是为什么using namespace
条款如此猥琐的原因。不过,您可以将这些标头包含在另一个命名空间中:
namespace bleh {
#include "library_that_uses_evul_using_namespace.h"
}
这只会污染bleh
命名空间。
您无法摆脱"using 命名空间"。你可以有多个"使用命名空间"语句,它们是累加的。
但是,您可以将恶意标头包装到它自己的命名空间中:
namespace Crap
{
#include "maliciousHeader.h"
}
这样,"使用命名空间 std"仅适用于命名空间 Crap。我建议将上面的代码放入另一个标头中,该标头是您实际包含在程序中的标头。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 当vector是tje全局变量时,c++中vector的内存管理
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何创建一个空的全局类并在启动时实例化它
- 内联函数中具有内部链接的全局变量
- 为什么虚函数不能是静态的和全局的?
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 全局作用域中函数指针的赋值
- g++用户定义的动态链接库上的全局new和delete运算符
- 在命名空间中使用全局命名空间中的函数
- 全局变量 多读取器 一个写入器多线程安全?
- 类的全局对象和静态成员
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- 如果全局变量默认是外部变量,为什么要添加"extern"关键字?
- 不同作用域中的静态变量和全局变量
- 如何使用 llvm-10 库在C++定义 LLVM 全局值变量?
- 使用全局声明的向量时,C++双重释放错误/损坏
- 是否可以恢复到"default"全局命名空间?