当前位置:  开发笔记 > 编程语言 > 正文

在C/C++中自动检测OS

如何解决《在C/C++中自动检测OS》经验,为你挑选了2个好方法。

有没有办法使用您的C/C++代码自动检测您的操作系统?我需要这个来为Linux,Windows运行一些跨平台代码,甚至在Raspberry Pi上运行.我正在尝试自动检测操作系统,以便我不会处理我必须要求在机器上运行的操作系统作为输入的情况.

我正在考虑像验证文件系统结构或其他类似的黑客,我不知道我是否正在做某事.



1> Jeegar Patel..:

我过去使用下面的代码来检查linux和windows之间

#include

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/


是的旁注,这里使用编译时宏来检测操作系统.所以根据工具链,相应的宏的定义将在构建中进行.

要在运行时检测操作系统版本,就像在java中一样

System.getProperty("os.name")

在C/C++中,我们没有任何API.


在使用' uname '的POSIX系统中,我们可以获得操作系统名称.



2> StephenG..:

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

我还建议,如果您要针对多个平台,请寻找已经可用于它们的库。

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有