如何从Boost获取平台ID
How to get platform IDs from boost?
我们怎么知道代码正在运行哪个操作系统?
例如。如何知道诸如Unix-Linux,Solaris,HP Unix,Windows,Mac等之类的操作系统?
如何通过Boost确定C 代码中的操作系统?我想通过Boost V1.41进行测试。
必须将代码编译到要定位的特定平台中,因此您必须必须在 compile time 上知道平台。例如,Linux二进制文件无法在BSD,Solaris,AIX上运行...因此在运行时检查OS没有任何意义,并且无用
这意味着需要在C语句中通过预处理器指令和而不是检查操作系统。有Boost.Predef
包含各种预定义的宏来确定平台
此库定义了一组编译器,体系结构,操作系统,库和其他版本号,可以从其可以收集的C,C ,目标C和目标C 预定义的宏或通常可用的标头中定义的信息中收集。该库的想法来自于扩展Boost Config库以提供更多,一致的信息的建议,而不是其支持的功能定义。接下来是该简短建议的编辑版本。
...
BOOST_ARCH_
用于系统/CPU体系结构。BOOST_COMP_
用于编译器的一个人正在使用。BOOST_LANG_
对于语言标准,一个人正在编译。BOOST_LIB_C_
和BOOST_LIB_STD_
用于使用中的C和C 标准库。BOOST_OS_
对于我们正在编译的操作系统。BOOST_PLAT_
用于操作系统或编译器之上的平台。BOOST_ENDIAN_
用于OS和架构组合的末端。BOOST_HW_
对于硬件特定功能。BOOST_HW_SIMD
用于SIMD(单个指令多个数据)检测。
您可以为您的目的使用BOOST_OS_*
和BOOST_PLAT_*
。例如
#include <boost/predef.h>
// or just include the necessary header
// #include <boost/predef/os.h>
#if BOOST_OS_WINDOWS
#elif BOOST_OS_ANDROID
#elif BOOST_OS_LINUX
#elif BOOST_OS_BSD
#elif BOOST_OS_AIX
#elif BOOST_OS_HAIKU
...
#endif
完整列表可以在BOOST_OS
操作系统宏和BOOST_PLAT
平台宏中找到。BOOST_HW_
也可用于检测硬件平台
Godbolt上的演示
另请参见boost_arch上的演示
相关文章:
- 正在查找文档以获得PS4平台的C++中的设备信息
- 从函数角度看ID到文件路径的内部与外部映射
- 通过组合不同的类型来创建唯一的id
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- FFMPEG配置文件级别id大小无效
- 方法内部但循环仍得到预期的不合格id错误C++
- 如何获取 GLFW 窗口 ID?
- 当简单捕获中的标识符显示为参数的声明符 ID 时,没有编译器诊断
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 显示数组中的学生 ID 和最高分
- C++:"("令牌"之前有预期的非限定 id 指向类中成员函数的指针
- 在PostgreSQL中根据它们的ID选择大量行的最快方法是什么?
- Xcode 9.4.1 中的 Apple Mach-O 链接器 (id) 错误
- 错误:令牌 { '{' 之前应存在非限定 ID
- 断言"id < 0"在Qt ActiveX中失败
- 如何基于平台在制作文件中制作if语句?
- C++部分概念 id:显式模板规范顺序/第一个参数的特殊状态的原因是什么?
- 如何根据两个因素组织向量:id 和数量?(C++)
- 在返回 0 之前应为非限定 ID
- 如何从Boost获取平台ID