是否可以从C ++中删除标准功能
//Undefine some function from the standard like classes
class someclass
{
someclass(){
//Whatever
}
};
然后得到错误
"类未声明的标识符"
答案 0 :(得分:2)
不是我推荐它,但你可以使用预处理器宏来取消你想要的任何东西。
如果你编译下面的程序,你会收到很多错误。
#define vector
#include <vector>
int main()
{
vector<int> a;
}
您不需要文件中的#define vector
。您可以在用于调用编译器的命令中定义它。
请注意,使用上述技巧会使您的程序受到未定义的行为:
17.6.4.3保留名称
...
2如果程序在保留它的上下文中声明或定义名称,除了本条款明确允许的名称外,其行为是未定义的。
17.6.4.3.1宏名称 [macro.names]
1包含标准库标题的翻译单元不得在任何标准库标题中声明
#define
或#undef
个名称。2翻译单位不得
#define
或#undef
在词汇上与关键词相同,在表格[tab:identifiers.special]中列出的标识符,或attribute-tokens中描述的[dcl.attr] 3}}