У меня есть портативная библиотека, которая в одном месте должна делать X, если она скомпилирована в Visual Studio или только с компилятором Microsoft C/C++, и Y в противном случае. Какую #define
следует искать?
_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/
Быстрый поиск в Google приводит к предопределенным макросам в MSDN, в котором перечислены все макросы, предопределенные MSVC. Из них, вероятно, лучшим кандидатом является _MSC_VER
.