読者です 読者をやめる 読者になる 読者になる

#if文

#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