Распознавание clang, gcc и tcc с помощью макросов, определенных реализацией

Я использую clang, gcc и tcc, и я хотел бы иметь возможность различать три в общем заголовке.

судя по их макросам, я ожидаю, что присутствие __clang__ макрос однозначно идентифицирует clang.

Я не могу получить макрос-дамп с tcc ( $compiler -x c -E -dM /dev/null не работает в его случае ).

что такое макрос(ы) (если есть), который будет однозначно идентифицировать gcc (и, возможно, tcc)?

1 ответов


используйте __TINYC__ для обнаружения tcc1.

обнаружение gcc и clang объясняется в этом вопросе StackOverflow:обнаружение gcc в отличие от msvc / clang с макросом


1 (ЦИТ. по: http://bellard.org/tcc/tcc-doc.html#SEC9)
__TINYC__ является предопределенным макросом 1, чтобы указать, что вы используете TCC.