有什么方法可以使用您的 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/