我可以在便携式库中使用什么定义来判断编译器是否是Microsoft的?

时间:2014-06-19 08:31:04

标签: c++ c cross-platform

我有一个可移植的库,如果在Visual Studio下编译或只使用Microsoft的C / C ++编译器,在一个地方需要做X,否则需要Y.我应该寻找#define什么?

2 个答案:

答案 0 :(得分:6)

quick Google search导致predefined macros on MSDN,其中列出了MSVC预定义的所有宏。其中_MSC_VER可能是最佳候选人。

答案 1 :(得分: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/