首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C/C++操作系统的自动检测

C/C++操作系统的自动检测
EN

Stack Overflow用户
提问于 2015-12-08 09:38:00
回答 2查看 621关注 0票数 6

有没有任何方法可以使用C/C++代码自动检测您的操作系统?我需要这个来运行Linux、Windows的一些跨平台代码,即使是在Raspberry Pi上。我正在尝试自动检测操作系统,这样我就不会遇到这样的情况:我必须要求在机器上运行的操作系统作为输入。

我在想一种类似于验证文件系统结构之类的黑客行为,我不知道我是否了解到了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-08 09:40:14

我过去曾使用下面的代码在linux和windows之间进行检查。

代码语言:javascript
复制
#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中一样

代码语言:javascript
复制
System.getProperty("os.name")

同样,在C/C++中,我们没有任何API。

在使用“不名”的POSIX系统中,我们可以获得OS名称。

票数 7
EN

Stack Overflow用户

发布于 2015-12-08 10:05:05

有一个方便的列表(将其保存到磁盘!)。预定义编译器宏的列表。

我还建议,如果您针对的是多个平台,请寻找一个已经为其提供的库。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34152424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档