この記事では、C言語におけるプリプロセッサディレクティブの一つであるdefined
の使い方について解説します。
definedの基本的な使い方
プリプロセッサディレクティブの一つであるdefined
は、指定したマクロが定義されているかどうかをチェックするために使用されます。
defined
は条件付きコンパイルにおいて非常に便利な機能であり、特定のコードブロックを実行するかどうかを決定するために使用されます。
definedの構文
defined
の構文は以下のようになります。
#if defined(マクロ名)
// マクロが定義されている場合の処理
#else
// マクロが定義されていない場合の処理
#endif
definedの返り値
defined
は条件式として使用されるため、返り値は真偽値(0または1)です。
マクロが定義されている場合は1が返り、定義されていない場合は0が返ります。
definedの具体的な使い方
マクロの定義の有無をチェックする
defined
を使用する一つの例として、特定のマクロが定義されているかどうかをチェックする方法があります。
例えば、以下のようなコードがあるとします。
#include <stdio.h>
#define DEBUG
int main() {
#if defined(DEBUG)
printf("Debug mode is enabled.\n");
#else
printf("Debug mode is disabled.\n");
#endif
return 0;
}
上記のコードでは、DEBUG
というマクロが定義されているかどうかをチェックしています。
もしDEBUG
が定義されている場合は、Debug mode is enabled.
というメッセージが表示されます。
定義されていない場合は、Debug mode is disabled.
というメッセージが表示されます。
特定のバージョンのC言語をチェックする
defined
を使用して、特定のバージョンのC言語が使用されているかどうかをチェックすることもできます。
例えば、C99の機能を使用するためには、以下のようなコードを書くことができます。
#include <stdio.h>
int main() {
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
printf("C99 or later is being used.\n");
#else
printf("C99 or later is not being used.\n");
#endif
return 0;
}
上記のコードでは、__STDC_VERSION__
というマクロが定義されているかどうかをチェックし、その値が199901L以上であれば、C99 or later is being used.
というメッセージが表示されます。
それ以外の場合は、C99 or later is not being used.
というメッセージが表示されます。
プラットフォームのチェック
defined
を使用して、特定のプラットフォームでのコンパイルを行うかどうかをチェックすることもできます。
例えば、以下のようなコードがあるとします。
#include <stdio.h>
int main() {
#if defined(_WIN32)
printf("This code is being compiled on Windows.\n");
#elif defined(__linux__)
printf("This code is being compiled on Linux.\n");
#else
printf("This code is being compiled on an unknown platform.\n");
#endif
return 0;
}
上記のコードでは、_WIN32
というマクロが定義されているかどうかをチェックし、定義されていればThis code is being compiled on Windows.
というメッセージが表示されます。
_WIN32
が定義されていない場合は、__linux__
というマクロが定義されているかどうかをチェックし、定義されていればThis code is being compiled on Linux.
というメッセージが表示されます。
どちらのマクロも定義されていない場合は、This code is being compiled on an unknown platform.
というメッセージが表示されます。
以上が、defined
の基本的な使い方と具体的な使い方の解説です。
defined
を使うことで、マクロの定義の有無や特定の条件をチェックすることができます。
プリプロセッサの機能を活用して、柔軟なコードの制御を行いましょう。
defined
はその中でも特にマクロの定義の有無をチェックするために使用されます。