C 言語 マクロ講座 基礎編 ― 2007年03月15日 11時18分21秒
#if と #else は比較的良く使うが、#elif の利用頻度はとても低い。そのため、else if の記述の四方は、各種言語によって色々と変わるので、マクロではどの形を取るのか、忘れてしまい必要な時に思い出せない事も何回かあった。
正しい構文は #if と #elif と #else である。以下の例はしっかり目を通してほしい。
% cat if-elif-else.c
#if 0
1
#elif 0
2
#else
3
#endif
#if 0
10
#elseif 20
20
#elif 30
30
#else
40
#endif
#endif
% gcc -E if-elif-else.c
# 1 "if-elif-else.c"
# 1 ""
# 1 ""
# 1 "if-elif-else.c"
3
30
#elseif は正しくない。#elseif がどのように処理されるかは、処理系依存であろうが、gcc と VOS C コンパイラはあたかも偽の条件であるように動作した。しかし、構文的には間違っていても,何も警告もなく、しかも中途半端に期待どおりの動作をしているように見えるときもあるので注意が必要だ。
最近のコメント