C ++删除标准功能

时间:2017-06-16 04:00:41

标签: c++

是否可以从C ++中删除标准功能

//Undefine some function from the standard like classes 
class someclass
{
    someclass(){
       //Whatever       
   }
};

然后得到错误

  

"类未声明的标识符"

1 个答案:

答案 0 :(得分:2)

不是我推荐它,但你可以使用预处理器宏来取消你想要的任何东西。

如果你编译下面的程序,你会收到很多错误。

#define vector 
#include <vector>

int main()
{
   vector<int> a;
}

您不需要文件中的#define vector。您可以在用于调用编译器的命令中定义它。

请注意,使用上述技巧会使您的程序受到未定义的行为:

来自the C++11 Standard

  

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}}