#if /#endif 预处理指令

Posted

技术标签:

【中文标题】#if /#endif 预处理指令【英文标题】:#if /#endif preprocessing directives 【发布时间】:2012-06-06 11:57:25 【问题描述】:

我应该总是使用#if 指令加上#endif吗?

    如果是 - 如果我只使用 #if 会出现什么问题? 如果没有 - 当我只使用 #if 时,当我使用 #if/#else 时?

谢谢。

【问题讨论】:

#if#endif不是宏,而是预处理指令。 我无法想象您为什么认为这是一个问题。您是否遇到过省略#endif 看起来会派上用场的情况? 另外,我不明白你的第二个问题。你的意思是“何时”而不是“为什么”? 【参考方案1】:
1.If yes - what could be a problem if I only use #if?

正如其他人所说,如果您只使用 #if 并且不将其与 #endif 匹配,则预处理器将失败并显示为编译器错误。

2.If no - why I use only #if,and when combination #if/#else?

即使是#if/#else,最后也应该有一个#endif。否则它将无法正常工作。你可以自己试试看。

这些最常用于条件编译,除了检查和定义宏。请在下面找到一些相关链接(基本级别):

http://gcc.gnu.org/onlinedocs/cpp/Ifdef.htmlhttp://en.wikipedia.org/wiki/C_preprocessorhttp://www.phanderson.com/C/preprocess.html

【讨论】:

【参考方案2】:

如果您没有匹配的#endif,(或#else ... #endif),您的代码将无法编译。

【讨论】:

【参考方案3】:

是的。

如果没有#endif,预处理器将不会知道#if 块的结尾。

【讨论】:

以上是关于#if /#endif 预处理指令的主要内容,如果未能解决你的问题,请参考以下文章

#if 预处理器指令并不总是崩溃

预处理器指令

Unity预处理器指令错误?

预处理指令

预处理指令

#elif