C プリプロセッサ

C言語げんごプリプロセッサディレクティブ (Preprocessor Directives) リファレンス。

#define

定数ていすう (const) またはマクロ (macro) を定義ていぎするために使用しようします。

#define PI 3.14159
#define SQUARE(x) ((x)*(x))

#ifdef

macro定義ていぎされている場合ばあいつづくコードブロックをコンパイルします。

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

#ifndef

macro定義ていぎされていない場合ばあいつづくコードブロックをコンパイルします。

通常つうじょう#define一緒いっしょ使用しようして、ヘッダファイルの多重たじゅうインクルードをふせぎます。

#ifndef _MYHEADER_H
#define _MYHEADER_H
// ヘッダファイルの内容
#endif

#include

ほかのヘッダファイルをインクルードするために使用しようします。

#include <stdio.h>
#include "myheader.h"

#if / #else / #elif / #endif

あたえられた条件式じょうけんしきもとづいて、つづくコードブロックをコンパイルするかどうかを決定けっていします。

#if defined(_WIN32)
    // Windows コード
#elif defined(__linux__)
    // Linux コード
#else
    // その他のプラットフォームコード
#endif

#undef

以前いぜん定義ていぎした macro定義ていぎすために使用しようします。

#define MAX 100
// コード
#undef MAX // MAX の定義を取り消す

#pragma

コンパイラ固有こゆうのディレクティブで、コンパイラの動作どうさ制御せいぎょするために使用しようします。

#pragma once // ヘッダファイルが一度だけインクルードされることを保証 (#ifndef trick の代替)
#pragma omp parallel for // OpenMP による for ループの並列化

#error

プリプロセス段階だんかいでエラーメッセージを発行はっこうします。通常つうじょう特定とくてい条件じょうけんたされていないことを検出けんしゅつするために使用しようします。

#if (__cplusplus < 201103L)
#error "This code requires C++11 or later"
#endif

#line

現在げんざいのソースコードの位置いち再設定さいせっていするために使用しようします。おもにデバッグ目的もくてき使用しようされます。