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