#if /#endif预处理指令

时间:2012-06-06 11:57:26

标签: c++ c preprocessor-directive

我是否应始终使用#if指令和#endif

  1. 如果是 - 如果我只使用#if
  2. ,可能会出现什么问题
  3. 如果不是 - 当我仅使用#if时,以及何时使用#if / #else
  4. 谢谢。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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

答案 2 :(得分:3)

是。

如果没有#endif,预处理器将无法知道#if块的结束。