マクロは__OPTIMIZE__
clangにも存在し、gccと同じように機能するようです(サンプルコードは正常に機能します)。
これに関する具体的なドキュメントはまだ見つかりませんが、リンクしたページに、gccで採用されていないclang固有のマクロがいくつかリストされていると思われます。編集__COUNTER__
: gccにも存在するので、これは厳密には真実ではありません。
この問題は、gccと可能な限り互換性があるというclangの「使命」に該当すると思います。
Clangドライバーと言語機能は、GNU GCCコンパイラーと可能な限り互換性があるように意図的に設計されており、GCCからClangへの移行を容易にします。ほとんどの場合、コードは「正しく機能します」。
ソース:http ://clang.llvm.org/docs/UsersManual.html#id4
また、この小さなコマンドは、コンパイラが使用するマクロを一覧表示するのに役立ちます。
cc -dM -E -x c [options] /dev/null
gcc、clang、そしておそらく他のいくつかのコンパイラで動作します。
編集:結局のところそれが文書化されているように見えます...コードで:)
__OPTIMIZE__はClangが実装するGNU拡張機能ですが、MSVCは実装していません。そこに良い同等物はありますか?
ソース:https ://github.com/llvm-mirror/clang/blob/master/include/clang/StaticAnalyzer/Core/PathSensitive/ConstraintManager.h#L84