C言語 #ifdefとは?定義の確認

#ifdef コマンドは、#define で定義された識別子が
あるかどうかをチェックするコマンドです。

あとの処理は、#if と同じく、条件付きコンパイル機能となります。
#ifについてはコチラのページをご覧ください。

構文

#ifdef #define識別子
      何らかの処理
#elif 条件
      何らかの処理
#else
      何らかの処理
#endif

条件に合った部分の処理だけをコンパイル対象とします。



サンプルプログラムです。

#include <stdio.h>

#define SW // 定義を外す時は、この1行をコメントアウトする。

void main(void) {
#ifdef SW
      処理1
#else
      処理2
#endif

}

#define識別子SWが定義されている時は、処理1の部分がコンパイル対象となり、
#else以下の処理2はコンパイルされません。

また、SWが定義されていなかったら、
処理2の部分だけがコンパイル対象となります。


#ifdef コマンドの逆の意味である #ifndef コマンドも存在します。

#ifndef コマンドの意味は、
#define 識別子が定義されてなかったら・・・。
となります。

#ifdef#ifndef コマンドは、別の表現方法もあります。

#if defined#if !defined です。

それぞれ、同じ意味を表します。

#if defined コマンドの省略形が、#ifdef

#if !defined コマンドの省略形が、#ifndef

となっています。

一般的に、#ifdef と #ifndef を使う事が多いでしょう。



#ifについてはコチラのページをご覧ください。