#define A(a) "str" ## a ## test
A(_)
17.6.4.3.5
C++11 標準によると
アンダースコアで始まらないリテラル サフィックス識別子は、将来の標準化のために予約されています。
上記のコード"str"_test
は、有効な前処理トークンとそのクラスを生成する必要がありますuser-defined-string-literal
。
を介してプリプロセッサモードで実行すると、clang 3.0 はエラーを生成します-E
。
クランは次のように与えます:
pasting formed '"str"_', an invalid preprocessing token
A(_)
^
note: expanded from:
#define A(a) "str" ## a ## test
^
"str"_test
1 error generated.
結果が無効な前処理トークンではないと判断した手順がわかりません。
注: 私は c++11 プリプロセッサを作成しています。