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

C++ 在可移植库中,我可以使用什么定义来判断编译器是否是Microsoft的?,c++,c,cross-platform,C++,C,Cross Platform,我有一个可移植的库,如果在VisualStudio下编译或仅使用Microsoft的C/C++编译器编译,它需要在一个地方执行X,否则需要执行Y。我应该寻找什么定义?一个列出MSVC预定义的所有宏的线索。其中,\u MSC\u VER可能是最好的候选者。关于MSVC编译器及其版本,您需要的是\u MSC\u VER #ifdef _MSC_VER .. MSVC compiler #endif 您还可以使用它跨MSVC版本专门化代码 #if _MSC_VER > 1700 ..

我有一个可移植的库,如果在VisualStudio下编译或仅使用Microsoft的C/C++编译器编译,它需要在一个地方执行X,否则需要执行Y。我应该寻找什么定义?

一个列出MSVC预定义的所有宏的线索。其中,\u MSC\u VER可能是最好的候选者。

关于MSVC编译器及其版本,您需要的是\u MSC\u VER

#ifdef _MSC_VER
  .. MSVC compiler
#endif
您还可以使用它跨MSVC版本专门化代码

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

另一个编译器宏列表可以在这里找到:

你可以在boost库中找到很多定义。我非常同意它是首选的候选者,但你引用的页面似乎没有说明这一点。@JamesKanze谢谢,写得相当快。重新措辞。