Какое определение я могу использовать в переносимой библиотеке, чтобы определить, является ли компилятор Microsoft?

0

У меня есть портативная библиотека, которая в одном месте должна делать X, если она скомпилирована в Visual Studio или только с компилятором Microsoft C/C++, и Y в противном случае. Какую #define следует искать?

  • 2
    _MSC_VER для одного.
  • 2
    Вы можете найти много определений в библиотеке повышения
Теги:
cross-platform

2 ответа

4
Лучший ответ

_MSC_VER - это то, что вы ищете относительно компиляторов MSVC и их версий

#ifdef _MSC_VER
  .. MSVC compiler
#endif

и вы также можете использовать это, чтобы специализировать свой код в версиях MSVC

#if _MSC_VER > 1700
  .. MSVC compiler is greater than 11 (2012)
#endif

Другой список макросов компилятора можно найти здесь: http://sourceforge.net/p/predef/wiki/OperatingSystems/

6

Быстрый поиск в Google приводит к предопределенным макросам в MSDN, в котором перечислены все макросы, предопределенные MSVC. Из них, вероятно, лучшим кандидатом является _MSC_VER.

  • 0
    Я в значительной степени согласен, что это предпочтительный кандидат, но страница, которую вы цитируете, похоже, ничего об этом не говорит.
  • 0
    @JamesKanze Спасибо, писал довольно быстро. Re сформулированное.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню