C/C++中操作系统的自动检测
Autodetection of OS in C/C++
是否有任何方法可以使用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。
在使用"uname"的POSIX系统中,我们可以获得操作系统名称。
有一个方便的列表(保存到磁盘!)。预定义编译器宏的列表。
我还建议,如果您针对多个平台,请寻找一个已经为它们提供的库。
相关文章:
- 无法获得 std::from_chars 自动检测基础
- QImage:加载图像时自动检测格式
- 如何让Visual Studio自动检测子文件夹中的.cpp文件?
- GCC - 如何自动检测每个基本模块
- 自动检测C++14 "return should use std::move"情况
- c++Windows自动检测代理设置
- 函数有没有办法自动检测其参数的数据类型?(请不要建议函数重载)
- 是否可以在c++中检测操作系统
- 自动检测源以进行自动制作
- 使C++初始值设定项自动检测工会成员
- 如何使用 C/C++自动检测 snmp 设备
- 用c++实现函数对象的自动检测类型
- C/C++中操作系统的自动检测
- 使用ESP8266自动检测本地服务器
- 如何以可移植的方式在C++中自动检测内存泄漏
- 一种自动检测对象的方法,该方法通过值传递给c++中的函数
- 同时自动检测COM-Port和WriteLine
- 在c++ (Windows)中自动检测Arduino
- 自动检测不带参数的模板参数
- 使用gammu时自动检测调制解调器端口