2012-06-06 104 views
0

我是否应该总是使用#if指令加上#endif#if /#endif预处理指令

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

谢谢。

+2

'#'if'and#endif'不是宏,但预处理指令。 –

+2

我无法想象为什么你认为这是一个问题。你有没有遇到过忽略'#endif'看起来会派上用场的情况? –

+0

另外,我不明白你的第二个问题。你的意思是“何时”而不是“为什么”? –

回答

4
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.html
http://en.wikipedia.org/wiki/C_preprocessor
http://www.phanderson.com/C/preprocess.html

3

是的。

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

4

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