この記事では、C言語における#define
の定義で##
を使う意味や使い方について解説します。
目次から探す
#defineの定義で##と書く意味
##の役割とは
C言語において、##
はプリプロセッサ演算子と呼ばれ、マクロの定義に使用されます。
##
は、マクロの引数やテキストを連結するために使用されます。
この演算子を使うことで、マクロの定義を柔軟に行うことができます。
##を使った文字列の連結
##
を使って文字列を連結することができます。
例えば、以下のようなマクロを考えてみましょう。
#define CONCAT(a, b) a##b
このマクロを使用すると、CONCAT(Hello, World)
というコードは、HelloWorld
という文字列に展開されます。
##
を使うことで、複数の文字列を一つの文字列に連結することができます。
##を使ったトークンの連結
##
を使ってトークンを連結することもできます。
トークンとは、変数名や関数名などの識別子のことです。
例えば、以下のようなマクロを考えてみましょう。
#define DECLARE_VARIABLE(type, name) type name_##name
このマクロを使用すると、DECLARE_VARIABLE(int, count)
というコードは、int count_count
という変数の宣言に展開されます。
##
を使うことで、異なるトークンを連結して新しいトークンを作ることができます。
#defineの定義で##を使った具体的な例
文字列の連結の例
以下のコードは、CONCATマクロ
を使って文字列を連結する例です。
#include <stdio.h>
#define CONCAT(a, b) a##b
int main() {
printf("%s\n", CONCAT("Hello", "World"));
return 0;
}
実行結果は、HelloWorld
となります。
トークンの連結の例
以下のコードは、DECLARE_VARIABLEマクロ
を使ってトークンを連結する例です。
#include <stdio.h>
#define DECLARE_VARIABLE(type, name) type name_##name
int main() {
DECLARE_VARIABLE(int, count);
count_count = 10;
printf("count_count: %d\n", count_count);
return 0;
}
実行結果は、count_count: 10
となります。
以上が、C言語における#define
の定義で##
を使う意味や使い方の解説です。
##
を使うことで、文字列やトークンを連結することができ、柔軟なマクロの定義が可能となります。