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

我有一些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)

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...