我知道我可以检测到编译器类型(例如 gcc:http: //sourceforge.net/p/predef/wiki/Compilers/)。但是g++呢?如果我使用 g++,我也可以使用__GNUC__
宏来测试吗?
关于操作系统类型的另一个问题。我知道,我可以这样做:
#if defined(__linux__)
/* Linux. --------------------------------------------------- */
#endif
但是如何使它成为一个优雅的解决方案呢?让它成为main中的第一个函数?我是说:
#include <iostream>
int compiler()
{
#if defined (__GNUC__)
return 0;
#elif defined (_MSC_VER)
return 1;
#else
return -1;
#endif;
}
int os()
{
#if defined(_WIN32) || defined(_WIN64)
return 0;
#elif defined(__linux__)
return 1;
#else
return -1;
#endif
}
int main(int argc, char **argv)
{
std::cout << compiler() << "\n";
std::cout << os();
return 0;
}
上面的代码是优雅的,还是可以做得更好(更便携等)?