MENU

【C言語】使用できるプリプロセッサ一覧

目次から探す

プリプロセッサとは

プリプロセッサは、C言語のコンパイル前にソースコードを変換するためのツールです。

プリプロセッサは、ソースコード内の特定の指示に基づいて、コンパイル時に実行される処理を行います。

主な役割は、ソースコードの組み込みや条件付きコンパイルなどです。

プリプロセッサの役割

プリプロセッサの主な役割は以下の通りです。

  • ソースコードの組み込み: #includeディレクティブを使用して、他のファイルの内容をソースコードに組み込むことができます。
  • マクロの定義と展開: #defineディレクティブを使用して、マクロを定義し、ソースコード内でそのマクロを展開することができます。
  • 条件付きコンパイル: #ifdef#ifndef#ifなどのディレクティブを使用して、特定の条件が満たされた場合にのみコードをコンパイルすることができます。

プリプロセッサの基本的な使い方

プリプロセッサディレクティブは、ソースコード内で#で始まる特別な命令です。

以下に、プリプロセッサディレクティブの基本的な使い方を説明します。

使用できるプリプロセッサディレクティブ一覧

#includeディレクティブ

#includeディレクティブは、他のファイルの内容をソースコードに組み込むために使用されます。

以下は、stdio.hヘッダーファイルを組み込む例です。

#include <stdio.h>

#defineディレクティブ

#defineディレクティブは、マクロを定義するために使用されます。

以下は、PIというマクロを定義する例です。

#define PI 3.14159

#ifdefディレクティブ

#ifdefディレクティブは、指定したマクロが定義されている場合にのみ、コードをコンパイルするために使用されます。

以下は、DEBUGマクロが定義されている場合にのみ、デバッグ用のコードをコンパイルする例です。

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

#ifndefディレクティブ

#ifndefディレクティブは、指定したマクロが定義されていない場合にのみ、コードをコンパイルするために使用されます。

以下は、DEBUGマクロが定義されていない場合にのみ、デバッグ用のコードをコンパイルする例です。

#ifndef DEBUG
    printf("Release mode\n");
#endif

#ifディレクティブ

#ifディレクティブは、指定した条件が真の場合にのみ、コードをコンパイルするために使用されます。

以下は、DEBUG_LEVELが1以上の場合にのみ、デバッグ用のコードをコンパイルする例です。

#if DEBUG_LEVEL >= 1
    printf("Debug mode\n");
#endif

#elifディレクティブ

#elifディレクティブは、前の条件が偽である場合に、新しい条件が真の場合にのみ、コードをコンパイルするために使用されます。

以下は、DEBUG_LEVELが1以上の場合はデバッグ用のコードを、2以上の場合はより詳細なデバッグ用のコードをコンパイルする例です。

#if DEBUG_LEVEL >= 2
    printf("Detailed debug mode\n");
#elif DEBUG_LEVEL >= 1
    printf("Debug mode\n");
#endif

#elseディレクティブ

#elseディレクティブは、前の条件が偽である場合に、コードをコンパイルするために使用されます。

以下は、DEBUGマクロが定義されていない場合にのみ、デバッグ用のコードをコンパイルする例です。

#ifndef DEBUG
    printf("Release mode\n");
#else
    printf("Debug mode\n");
#endif

#endifディレクティブ

#endifディレクティブは、条件付きコンパイルのブロックの終わりを示すために使用されます。

以下は、DEBUGマクロが定義されている場合にのみ、デバッグ用のコードをコンパイルする例です。

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

#pragmaディレクティブ

#pragmaディレクティブは、コンパイラに対して特定の指示を与えるために使用されます。

例えば、最適化レベルの指定や警告の無効化などがあります。

以下は、最適化レベルを指定する例です。

#pragma optimize(3)
1 2
目次から探す