2011-04-13 89 views
3

可能重复:
Detect compiler with #ifdef检查编译器是gcc/mingw还是VC++ cl的标志?

大家好,

我一直工作在C++项目在Linux上使用和MinGW GCC上windows.Now我想用Windows上的VC++ cl编译器。 我是保持相同的源代码树只改变像编译器特定的逻辑:在做这个

#ifdef VC_CL_COMPILER 
//do vc++ related 
#elif MINGW_FLAG 
//do mingw related 
#elseif GCC_FLAG 
    //do gc related  
#endif 

反正提示?

+0

原因重启:我觉得GCC特别值得一情况下,作为'__GNUC__'标志由其他编译器还定义。参见[这里](http://sourceforge.net/p/predef/wiki/Compilers/#gcc-cc)。 – Antonio 2016-01-27 10:47:09

回答

10

编译器通常为此有一个预定义的宏。

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

#endif 
+4

Gcc v4.1(可能还有其他的)没有定义'__GCC__'。 它是'__GNUC__'应该被测试。 – iksess 2014-09-10 15:14:26