次の方法で共有


トークン演算子 (##)を貼り付けます

二つの数値記号または演算子 () を [ 「トークン連結とオブジェクトに似た関数に似たマクロに」「演算子をマージするというが使用されます。これにより区切り一つのトークンに結合するトークンに従ってマクロ定義の最初または最後のトークンにすることはできません。

マクロ定義の仮パラメーターはトークン連結演算子の前または後ろには仮パラメーターが拡張されておらず実引数に置き換えられます。マクロの配置前に引数で置換は実行されません。

次に トークン文字列 トークン連結演算子が繰り返されてが削除されその前に記述し次のトークンが連結されます。結果のトークンは有効なトークンである必要があります。その場合トークンは代わりにマクロ名を表す走査されます。識別子を連結したトークンに置換の前のプログラムにおける既知の名前を表します。各トークンはプログラム内でまたはコンパイラのコマンド ラインで他の場所で定義されたトークンを表します。演算子の直前または後続の空白は省略可能です。

この例ではプログラムの出力を指定する stringizingトークン連結演算子の使用例です :

#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;

マクロは引数 number の場合が呼び出されます

paster( 9 );

マクロの使用

printf_s( "token" "9" " = %d", token9 );

なるかは

printf_s( "token9 = %d", token9 );

使用例

// preprocessor_token_pasting.cpp
#include <stdio.h>
#define paster( n ) printf_s( "token" #n " = %d", token##n )
int token9 = 9;

int main()
{
   paster(9);
}
  

参照

関連項目

プリプロセッサ演算子