2012-06-06 103 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),您的代碼將無法編譯。