我可以在可移植库中使用什么定义来判断编译器是否Microsoft?

What define can I use in a portable library to tell if the compiler is Microsoft's?

本文关键字:判断 编译器 是否 Microsoft 定义 什么 可移植 我可以      更新时间:2023-10-16

我有一个便携式库,如果在Visual Studio下编译或仅使用微软的C/c++编译器编译,则在一个地方需要做X,否则需要做Y。我应该寻找什么#define ?

一个快速的谷歌搜索会导致MSDN上预定义的宏,其中列出了MSVC预定义的所有宏。其中,_MSC_VER可能是最佳候选。

_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/