gcc プリプロセッサと MS VS cl の違いがもう 1 つあります。次のスニペットを検討してください。
# define A(x) L ## x
# define B A("b")
# define C(x) x
C(A("a" B))
「gcc -E」の場合、次の結果が得られます。
L"a" A("b")
「cl /E」の場合、出力は異なります。
L"a" L"b"
MS プリプロセッサは何らかの方法で追加のマクロ展開を実行します。gccとは明らかに動作のアルゴリズムが異なりますが、このアルゴリズムも秘密のようです。観測された違いをどのように説明できるか、また MS cl での前処理のスキームを知っている人はいますか?