I have some c++ code that has a bunch of #ifdef WIN32 else we assume its IOS code. However I am now trying to use this same c++ code for an android port.
Is there some sort of equivalent for #ifdef WIN32 || ANDROID?
Regarding predefined macros, there is the famous predef.sf.net.
Looking for Android brings up the devices page. There:
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
If you want to include a code block for versions for a high enough version, you must first check for existence, and then you can do arithmetic comparisons:
#ifdef __ANDROID_API__
# if __ANDROID_API__ > 6
at least android 2.0.1
# else
less than 2.0.1
# endif
#endif
You can't do #ifdef FOO || BAR
. The standard only defines the syntax
# ifdef identifier new-line
but you can use the unary operator defined
:
#if defined(FOO) && defined(BAR)
you can also negate the result using !
:
#if !defined(FOO) && defined(BAR)
this is included only if there is no FOO, but a BAR.
and of course there's a logical-or:
#if defined(FOO) || defined(BAR)
this is included if there is FOO or BAR (or both)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With