【C言語】defineマクロとは?仕様や使い方を解説

この記事では、C言語におけるdefineマクロの基本的な使い方や活用方法を解説します。

目次から探す

defineマクロの概要

マクロとは

マクロは、コンパイラによってプログラムが実行される前に展開されるテキスト置換指示です。

C言語では、defineディレクティブを使用してマクロを定義します。

defineマクロの役割

defineマクロは、ソースコード内で特定の文字列や式を定義し、後続のコード中でその定義を利用するために使用されます。

これにより、プリプロセッサがその場所に置き換えコードを挿入します。

defineマクロの基本的な使い方

defineマクロの定義方法

defineマクロは、 #define キーワードを使用して以下の形式で定義します。

#define MACRO_NAME replacement_text

ここで、 MACRO_NAME は任意の識別子名(大文字推奨)、そして replacement_text は代替テキストまたは式です。

defineマクロの呼び出し方法

defineマクロが一度定義されたら、後続するソースコード中で呼び出すことが可能です。

呼び出す際には単純なテキスト置換が行われます。

パラメータ付きのdefineマクロ

パラメータ付きマクロの定義方法

defineママクロ をパラメータを持つように設計することも可能です。

以下がその例です。

#define MACRO_NAME(parameter) replacement_text

ここで、 parameter はパラメータ名(大文字推奨)、そして replacement_textparameter と一致させたいテキストまたは式です。

パラメータ付きマクロの使用例

これにより、同じボディ内の複数箇所で replacement_text 内にある parameter というキーワードを一度だけ書くだけでも必要な場面に使用する値や操作を反映することが可能です。

条件付きコンパイルにおけるdefineマクロの活用

条件付きコンパイルとは

条件付きコンパイルは、プログラムが特定の条件下で異なる実装を持つよう指示します。

この場合、特定条件下では特定部分をビルド・実行対象からはずすことができます。

条件付きコンパイルにおけるdefineマクロの使い方

条件付きコンパイルでは、defineマクロ を使用して特定の条件の下でソースコードを展開するかスキップするかを判断します。

一般的な構文は以下です。

#ifdef MACRO_NAME
   code to be included if the macro is defined
#else 
   code to be included otherwise
#endif

条件付きコンパイルの例

このような記述を活用することで、異なるオペレーティングシステムや環境ごとに適切なソースコードを設定・変更せずに利用することが可能です。

defineマクロの一般的な活用例

定数の定義

defineマクロは、プログラム内で何度も使用される値(定数)や式に名前をつけて参照しやすくするために使用されます。

これにより、後々値や式が変更された場合でもそのまま修正不要で更新が行えます。

関数の定義

関数内部またはヘッダファイル内でdefineマクロ を活用し関数化した処理ブロック内でも同様です。

流れ図上またはチュートリアル動画にて何度も使用される複数行のshellコードなどでも特に役立ちます。

デバッグ用の出力

デバッグ時にはプログラム中で問題が発生している箇所を可視化する必要があります。

この場合、defineマクロ を活用し短期間内でデバッグエントリを追加削除しやすくすることができます。

目次から探す