C言語 | プリプロセス | 条件付きコンパイル - defined

条件付きコンパイルは、コンパイル対象にするソースコードを選択する。デバッグビルド、リリースビルド、プラットフォーム固有コードに役立つ。

コンパイルの制御

#if#endif に定数式を指定する。

#if 定数式
 コード
#endif

コード1

#include <stdio.h>
#define DEBUG_MODE 1

int main() {
#if DEBUG_MODE
 printf("Debug mode\n");
#endif
 return 0;
}

代替コードには #else、追加条件には #elif を使う。

#if LANG == EN
 printf("Kitty on your lap\n");
#elif LANG == KO
 printf("당신의 무릎 위에 고양이\n");
#else
 printf("Unsupported language\n");
#endif

定義の確認

置換テキストを持たないマクロも定義できる。

#define DEBUG

#if の中で defined を使うか、短い形式の #ifdef#ifndef を使う。

#if defined(DEBUG)
 printf("Debug mode\n");
#endif

#ifdef DEBUG
 printf("Debug mode\n");
#endif

#ifndef は名前が定義されていない場合にコードをコンパイルする。ヘッダーガードにもよく使われる。

設定エラーの報告

必須設定が不足している場合は、#error でコンパイルを停止する。

#ifndef BUFFER_SIZE
#error BUFFER_SIZE must be defined.
#endif