是否有#ifdef ANDROID等同于#ifdef WIN32

我有一些c ++代码,有一堆#ifdef WIN32,否则我们假设它的IOS代码。 不过,我现在正在尝试使用这个相同的c + +代码的Android端口。

是否有某种类似的#ifdef WIN32 || ANDROID?

Solutions Collecting From Web of "是否有#ifdef ANDROID等同于#ifdef WIN32"

macros

关于预定义的macros,有着名的predef.sf.net 。

寻找Android将打开设备页面 。 那里:

Android的

头文件中必须包含以下macros。

Type | Macro | Format | Description Version | __ANDROID_API__ | V | V = API Version 

 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 || BAR #ifdef FOO || BAR 。 该标准只定义了语法

 # ifdef identifier new-line 

但是可以使用一元运算符defined

 #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)