用于检查编译器是gcc/mingw还是VC++ cl的标志?

Ash*_*iya 3 c++ compiler-construction mingw visual-c++

可能重复:
使用#ifdef检测编译器

问候所有,

我一直在研究在Linux上使用gcc和在windows上使用gcc的C++项目.现在我想在Windows上使用VC++ cl编译器.我是保持相同的源代码树只更改编译器特定的逻辑,如:

#ifdef VC_CL_COMPILER
 //do vc++ related
#elif MINGW_FLAG
 //do mingw related
#elseif GCC_FLAG
  //do gc related    
#endif
Run Code Online (Sandbox Code Playgroud)

无论如何提示这样做?

Mar*_*lon 10

编译器通常有一个预定义的宏.

#if defined(__GCC__)
  //do gcc related
#elif defined(_MSC_VER)
  //do msvc related
#else

#endif
Run Code Online (Sandbox Code Playgroud)

  • Gcc v4.1(可能还有其他人)没有定义`__GCC__`.应该测试`__GNUC__`. (5认同)