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 コンパイラはあたかも偽の条件であるように動作した。しかし、構文的には間違っていても,何も警告もなく、しかも中途半端に期待どおりの動作をしているように見えるときもあるので注意が必要だ。

前回次回