有没有任何方法可以使用C/C++代码自动检测您的操作系统?我需要这个来运行Linux、Windows的一些跨平台代码,即使是在Raspberry Pi上。我正在尝试自动检测操作系统,这样我就不会遇到这样的情况:我必须要求在机器上运行的操作系统作为输入。
我在想一种类似于验证文件系统结构之类的黑客行为,我不知道我是否了解到了什么。
发布于 2015-12-08 09:40:14
我过去曾使用下面的代码在linux和windows之间进行检查。
#include<stdio.h>
int main(int argc, char *argv[])
{
#ifdef _WIN32
printf("in Windows");
#endif
#ifdef linux
printf("In Linux");
#endif
return 0;
}通常,所有工具链都有自己的预定义宏,因此需要使用这些宏来检测哪个操作系统是这样的。
这类预定义宏的列表。
http://sourceforge.net/p/predef/wiki/OperatingSystems/
是的,顺便提一下,这里使用编译时宏检测操作系统。因此,根据工具链,各自宏的定义将在构建中进行。
要在运行时中检测OS版本,就像在java中一样
System.getProperty("os.name")同样,在C/C++中,我们没有任何API。
在使用“不名”的POSIX系统中,我们可以获得OS名称。
发布于 2015-12-08 10:05:05
有一个方便的列表(将其保存到磁盘!)。预定义编译器宏的列表。
我还建议,如果您针对的是多个平台,请寻找一个已经为其提供的库。
https://stackoverflow.com/questions/34152424
复制相似问题