Почему __clang__ не определен при использовании LLVM + Clang в Visual Studio?

Я установил LLVM для Windows, который включает Clang и несколько других инструментов. Он интегрируется с Visual Studio и даже позволяет мне выбрать «Набор инструментов платформы» в свойствах проекта. Однако, когда я выбираю любой из наборов инструментов, поставляемых с LLVM, __clang__ не определяется, а вместо него определяется _MSC_VER. Как сделать __clang__ определенным при использовании LLVM и Clang в Visual Studio?

Моя версия Visual Studio - это предварительная версия 2015 года (однако я также безуспешно тестировал 2013 год), а моя версия LLVM основана на версии SVN 225473. Я безуспешно пробовал LLVM-vs2012, LLVM-vs2013 и LLVM-vs2014 в качестве инструментария платформы. .


person Adrian Collado    schedule 19.01.2015    source источник
comment
Если вы хотите обнаружить LLVM, отметьте __llvm__. Clang - это замена GCC, которой не является набор инструментов MSVC.   -  person n. 1.8e9-where's-my-share m.    schedule 19.01.2015
comment
Я совершенно уверен, что __clang__ также определен, по крайней мере, это был последний раз, когда я его тестировал. Убедитесь, что вы проверяете __clang__ перед _MSC_VER.   -  person Thomas    schedule 19.01.2015
comment
Ни __clang__, ни __llvm__ не определены при использовании набора инструментов платформы в Visual Studio. Я получил набор инструментов от llvm.org/builds   -  person Adrian Collado    schedule 20.01.2015
comment
Вы когда-нибудь находили решение этой проблемы, кроме определения clang для себя? У меня аналогичная проблема, но мне кажется, что я не могу добавить собственное определение в свою среду.   -  person Silicomancer    schedule 21.12.2018
comment
@Silicomancer, даже если я столкнулся с той же проблемой, что и вы, можете ли вы сказать мне, как вы ее решили, т.е. без определения clang   -  person geeker    schedule 17.03.2020
comment
Нет, решения не нашел.   -  person Silicomancer    schedule 18.03.2020
comment
Я так и не понял этого, кроме как сам определил.   -  person Adrian Collado    schedule 08.04.2020
comment
По крайней мере, с clang-cl 11 предопределено llvm.   -  person Bonita Montero    schedule 06.06.2021


Ответы (1)


В разделе «Свойства проекта» -> «C / C ++» -> «Препроцессор» -> «Определения препроцессора» добавьте __clang__. Да, это просто обходной путь.

person Matthew Grivich    schedule 18.02.2015
comment
Думаю, я могу использовать это сейчас, так как на данный момент мне интересно, не является ли это просто недосмотром со стороны Microsoft. - person Adrian Collado; 03.03.2015