C中是否有某种方法可以确定运行该程序的操作系统类型? 我必须这样做,因为我必须根据操作系统运行特定的系统调用。
if(OS == OSX)
system("open graph.dot");
els if(OS == LINUX)
system("xdg-open graph.dot")
我尝试使用此代码:
#ifdef defined(__APPLE__) && defined(__MACH__)
system("open graph.png");
#endif
#ifdef defined(__WINDOWS__)
system("start graph.png");
#endif
#ifdef defined(__linux__)
system("xdg-open graph.png");
#endif
但我有这个警告:
警告:#ifdef指令结束时的额外令牌
答案 0 :(得分:3)
当然,有一些特定于平台的方法可以找到有关操作系统的信息,但这不是你想要的。由于您的二进制文件仅适用于编译它的系统,因此确定 build 系统中的系统(如Makefile
或构建程序的脚本),例如使用-D
编译器选项。编译OSX时可以添加-DOSX
,然后可以使用
#ifdef OSX
// code for OSX
#endif
请注意,可以直接检查窗口,因为Windows的编译器始终定义_WIN32
,因此您只需使用
#ifdef _WIN32
// code for windows
#endif
没有自己明确设置定义。
还有更高级的可能性,例如为不同的系统提供不同的源文件,但这更像是关于makefile或用于构建项目的任何问题。