clang
、gcc
、およびを使用tcc
していますが、共通のヘッダーで 3 つを区別できるようにしたいと考えています。
マクロ ダンプから判断すると、マクロの存在によって
__clang__
clang が一意に識別されると思われます。
でマクロ ダンプを取得できませんtcc
($compiler -x c -E -dM /dev/null
この場合は機能しません)。
gcc (および場合によっては tcc) を一意に識別するマクロ (存在する場合) は何ですか?
__TINYC__ を使用して tcc 1を検出します。
gcc と clang の検出は、この StackOverflow の質問で説明されています: msvc / clang with macro に対して gcc を検出する
1 (引用元: http://bellard.org/tcc/tcc-doc.html#SEC9 )
__TINYC__ は、TCC を使用していることを示す 1 に対する定義済みのマクロです。