Как обнаружить LLVM и его версию через #define директивы?

платформы css, конечно, помогают, хотя они могут легко быть тяжелыми из-за "кучи" стилей, в которых Вы не будете нуждаться или использовать.

выезд IE Предназначения Используя Условные Комментарии и Всего Одна Таблица стилей в Положении является Всем для большой техники для питания IE определенные для версии стили, не используя взломы CSS; это позволяет Вам держать правила стиля вместе селектором, а не браузером.

62
задан Brian Tompsett - 汤莱恩 17 February 2016 в 10:29
поделиться

3 ответа

Макросы __llvm__ и __clang__ являются официальным способом проверки компилятора LLVM (llvm-gcc или clang) или clang, соответственно.

__has_feature и __has_builtin - рекомендуемый способ проверки дополнительных возможностей компилятора при использовании clang, Они документированы здесь.

Обратите внимание, что список макросов компилятора builtin для gcc, llvm-gcc и clang можно найти, используя:

echo | clang -dM -E -

Этот препроцессор обрабатывает пустую строку и выплёвывает все макросы, определенные компилятором.

.
73
ответ дан 24 November 2019 в 16:38
поделиться

Фрагмент из InitPreprocessor.cpp :

  // Compiler version introspection macros.
  DefineBuiltinMacro(Buf, "__llvm__=1");   // LLVM Backend
  DefineBuiltinMacro(Buf, "__clang__=1");  // Clang Frontend

  // Currently claim to be compatible with GCC 4.2.1-5621.
  DefineBuiltinMacro(Buf, "__GNUC_MINOR__=2");
  DefineBuiltinMacro(Buf, "__GNUC_PATCHLEVEL__=1");
  DefineBuiltinMacro(Buf, "__GNUC__=4");
  DefineBuiltinMacro(Buf, "__GXX_ABI_VERSION=1002");
  DefineBuiltinMacro(Buf, "__VERSION__=\"4.2.1 Compatible Clang Compiler\"");

Я не нашел способа получить версию llvm и сам лязгать…

10
ответ дан 24 November 2019 в 16:38
поделиться

Для clang не следует проверять номер версии, вы должны проверять наличие необходимых функций с помощью макроса проверки функций .

21
ответ дан 24 November 2019 в 16:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: