#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 预处理指令的主要内容,如果未能解决你的问题,请参考以下文章