【C言語】#defineの定義で##と書く意味や使い方を解説

この記事では、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の定義で##を使う意味や使い方の解説です。

##を使うことで、文字列やトークンを連結することができ、柔軟なマクロの定義が可能となります。

目次から探す