c++ - 在 C/C++ 中自动检测操作系统

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

有什么方法可以使用您的 C/C++ 代码自动检测您的操作系统吗?我需要它来为 Linux、Windows 甚至在 Raspberry Pi 上运行一些跨平台代码。我正在尝试自动检测操作系统,这样我就不会陷入必须请求机器上运行的操作系统作为输入的情况。

我在考虑像验证文件系统结构之类的黑客攻击,我不知道我是否在做某事。

最佳答案

我过去使用下面的代码在 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/


是的,作为旁注,这里使用编译时宏检测操作系统。因此,根据工具链,相应宏的定义将进入构建。

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

System.getProperty("os.name")

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


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

关于c++ - 在 C/C++ 中自动检测操作系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34152424/

相关文章:

c++ - 在新的 int[][] 上删除或删除[]

C++ 与 Python 精度

c - 无法读取以逗号结尾的字符串

c - c中的指针有问题

linux - Linux 中的文件访问方法

python - 如何将任何目录格式(windows、linux、mac)传递给函数并独立使用它(python3)

c++ - 帮助制作文件

c++ - Const 改变变量值

将 0.125 转换为 7 位浮点格式

linux - Centos 6.5 super 用户root丢失