无法定义哪些预处理器宏?

时间:2019-05-27 00:30:53

标签: c-preprocessor

我注意到尝试将defined定义为C / C ++中的宏会产生错误:

error: "defined" cannot be used as a macro name

这对我来说并不奇怪,因为允许重新定义defined可能会破坏类似#if defined(...)的指令。但是,这让我想知道还有哪些其他关键字会导致编译错误 1 。我发现C++ named operators也不能在define中使用,但是我找不到所有不可能的宏的列表。还有其他无法定义的宏吗?

1 ,同时(重新)定义诸如ifint之类的关键字对于预处理器可能是最糟糕的事情,但这样做不会导致编译错误。我正在寻找根本无法编译的关键字。

1 个答案:

答案 0 :(得分:0)

每个gnu.org,“您可以将任何有效的标识符定义为宏,即使它是C关键字也是如此。预处理器对关键字一无所知。如果您希望隐藏诸如' const”来自不了解它的旧编译器。但是,预处理器运算符“ defined”永远不能定义为宏。”