OS及C++编译器的一些预定义标识宏

本文详述了在编写可移植C++代码时如何利用操作系统和C/C++编译器预定义的标识宏进行条件判断。涵盖了Android、GNU/Linux、MacOS、MSDOS、UNIX、Windows等操作系统以及CLang、GCC、Microsoft Visual C++和MinGW等编译器的常见宏定义,帮助提升代码的可移植性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当编写可移植的C++代码,可能需要做一些所依赖的编译器或操作系统的条件判断,比如下面这样:

#if defined(_WIN32)
#if defined(_MSC_VER)
// Windows平台  Visual Statuio 编译器特定代码
#endif
#if defined(__GNUC__)
// Windows平台 GCC编译器特定的代码
#endif
#endif

为了自己的代码具有更好的可移植性,有必要熟记一些操作系统定义的标识宏,以及各种C++编译器预定义的标识宏。
下面主要整理常见的OS平台和常用的C++编译器定义的一些标识宏,以及部分标识版本的宏命令。

OS预定义宏

Android

类型 格式 描述
标识 __ANDROID__
版本 __ANDROID_API__ V V = API版本, 必须引入头文件 <android/api-level.h>

例子

Android版本 __ANDROID_API__
1.0 1
1.1 2
1.5 3
1.6 4
2.0 5
2.0.1 6
2.1 7
2.2 8
2.3 9
2.3.3 10
3.0 11

GNU/Linux

类型
标识 __gnu_linux__

Linux内核

基于Linux内核的系统定义了下面这些宏:

类型 描述
标识
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值