ないブログに表示されています。新しい記事を書く事で広告が消えます。世の中にはいろいろC++のコンパイラが存在するがとりわけgccとclangとMSVCが使われてると思う(あくまで著者の主観です、あとMSVCがC++コンパイラかどうかは議論がわかれます)。闇の言語であるC++の機能の中でも特に闇であるプリプロセッサだが、これがgccとMSVCで挙動が違う。以下のコードを見てほしい。(y)これはつまり展開の順番が違うということである。同一のプリプロセッサでもコンパイラによって挙動が違ってくる。これを知らずにコードを書くと死あるのみである。いうか普通に死にそうなのでやめてほしい。B(a)に、最後の行をCAT(x,A(y))にするとgccとMSVCで挙動が一致する。調査の必要性を感じる。関数マクロの引数の展開規則に問題ありますね。(y)→yの後ろ側)する場合に限って、マクロ名と左括弧の間に空白があると正しく展開されないように思えます。Reserved.忍者ブログ[PR]。