我有一些C代码有一堆#ifdef WIN32否则我们假设它的
IOS代码.不过我现在试图使用相同的c代码来安装一个
android端口.
对于#ifdef WIN32 ||有某种等价物ANDROID?
解决方法
宏
关于预定义的宏,有着名的predef.sf.net.
寻找Android带来the devices page.有:
Android
The following macros have to be included from the header file.
Type | Macro | Format | Description Version | __ANDROID_API__ | V | V = API Version
Example
Android Version | __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
例子
#ifdef __ANDROID__ # include <android/api-level.h> #endif #ifdef __ANDROID_API__ this will be contained on android #endif #ifndef __ANDROID_API__ this will NOT be contained for android builds #endif #if defined(WIN32) || defined(__ANDROID_API__) this will be contained on android and win32 #endif
如果要为足够高版本的版本添加代码块,则必须首先检查存在,然后可以进行算术比较:
#ifdef __ANDROID_API__ # if __ANDROID_API__ > 6 at least android 2.0.1 # else less than 2.0.1 # endif #endif
多重条件
你不能做#ifdef FOO ||酒吧.该标准仅定义语法
# ifdef identifier new-line
但是您可以使用定义的一元运算符:
#if defined(FOO) && defined(BAR)
您也可以使用!
#if !defined(FOO) && defined(BAR) this is included only if there is no FOO,but a BAR.
当然有一个逻辑 – 或:
#if defined(FOO) || defined(BAR) this is included if there is FOO or BAR (or both)