#if文は、プリプロセッサディレクティブのひとつで、指定されたマクロの値が真(true)の時、#endifまでのプログラムが有効となりコンパイル対象となる・・・。
偽(false)の時は、コンパイル対象にならないので、実行もされない・・・。
つまり、コメントアウトと同じようなものだが、これを使うとマクロの値によって条件付きコンパイルができる・・・。
/* ヘッダファイルのインクルード */ #include <stdio.h> /* 標準入出力 */ /* マクロの定義 */ #define SWITCH 0 /* main関数の定義 */ int main(void){ /* SWITCHが真ならコンパイル対象になるので実行される. */ #if SWITCH /* "Switch On"と出力 */ printf("Switch On\n"); /* printfで"Switch On"と出力. */ #endif /* "ABCDE"と出力 */ printf("ABCDE\n"); /* printfで"ABCDE"と出力. */ /* プログラムの終了 */ return 0; }
SWITCHマクロを0にしておく・・・。
"Switch On"を出力する部分はSWITCHが真(つまり0以外)の時、コンパイル対象になるので、
$ gcc if_directive.c -o if_directive $ ./if_directive ABCDE $
実行されない・・・。
しかし、
このようにSWITCHマクロを1にすると、
$ gcc if_directive.c -o if_directive $ ./if_directive Switch On ABCDE $
となって、"Switch On"の出力が実行された・・・。
Sample/c/if_directive/if_directive/src/if_directive at master · bg1bgst333/Sample · GitHub