当编写可移植的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内核的系统定义了下面这些宏:
类型 | 宏 | 描述 |
---|---|---|
标识 |