C++ 使用优雅的C/C+检测操作系统类型/编译器+;代码(尤其是gcc/g+;+;)
我知道我可以检测编译器类型(例如gcc:)。但是g++呢?如果Im使用g++,我是否也可以使用C++ 使用优雅的C/C+检测操作系统类型/编译器+;代码(尤其是gcc/g+;+;),c++,compiler-construction,operating-system,detection,C++,Compiler Construction,Operating System,Detection,我知道我可以检测编译器类型(例如gcc:)。但是g++呢?如果Im使用g++,我是否也可以使用\uuuu GNUC\uuuu宏进行测试 关于操作系统类型的另一个问题。我知道,我能做到: #if defined(__linux__) /* Linux. --------------------------------------------------- */ #endif 但如何让它成为一个优雅的解决方案呢?将其作为主要功能中的第一个?我的意思是: #include <iost
\uuuu GNUC\uuuu
宏进行测试
关于操作系统类型的另一个问题。我知道,我能做到:
#if defined(__linux__)
/* Linux. --------------------------------------------------- */
#endif
但如何让它成为一个优雅的解决方案呢?将其作为主要功能中的第一个?我的意思是:
#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;
}
#包括
int编译器()
{
#如果已定义(_GNUC__)
返回0;
#elif已定义(\u MSC\u VER)
返回1;
#否则
返回-1;
#endif;
}
intos()
{
#如果已定义(_WIN32)| |已定义(_WIN64)
返回0;
#已定义的elif(_linux__;)
返回1;
#否则
返回-1;
#恩迪夫
}
int main(int argc,字符**argv)
{
STD::CUTE考虑和实现你可能想按照编译器的某种方式做事。它的当前形式中的问题看起来很模糊。