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

时间:2015-12-08 09:38:01

标签: c++ c operating-system cross-platform

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

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

2 个答案:

答案 0 :(得分:6)

我过去使用过以下代码来检查linux和windows

for element in elements {
 if element has CSS.background-image {
   CSS.background-image = something;
 }
}

通常所有工具链都有自己的预定义宏,因此您需要使用这些宏来检测这是哪个操作系统。

此类预定义宏的列表。

http://sourceforge.net/p/predef/wiki/OperatingSystems/

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

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

#include<stdio.h>

int main(int argc, char *argv[])
{

#ifdef _WIN32
   printf("in Windows");
#endif

#ifdef linux
    printf("In Linux");
#endif

    return 0;
}

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

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

答案 1 :(得分:4)

有这个方便的列表(将其保存到磁盘!)。 predefined compiler macros

列表

我还建议,如果您要定位多个平台,请查找已经可用的库。