#define
ディレクティブでは、テキストの置換が行われます。そのため、マクロCCC
を定義する際にAAA
とBBB
を連結したい場合、マクロ展開のタイミングで正しい結果を得るためには、さらに追加のテキストマクロを使用する必要があります。
以下に例を示します。
#include <iostream>
using namespace std;
#define AAA "hello"
#define BBB "world"
#define CONCATENATE_STR(str1, str2) (str1##str2)
#define CCC CONCATENATE_STR(AAA, BBB)
int main() {
cout << CCC << endl; // "helloworld" と出力される
return 0;
}
※コメント投稿者のブログIDはブログ作成者のみに通知されます