Last active
April 2, 2020 14:49
-
-
Save dnedrow/b110e036e4c1321f08bc3c1459db9ce8 to your computer and use it in GitHub Desktop.
Example for checking target platform in C
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #ifdef _WIN64 | |
| //define something for Windows (64-bit) | |
| #elif _WIN32 | |
| //define something for Windows (32-bit) | |
| #elif __APPLE__ | |
| #include "TargetConditionals.h" | |
| #if TARGET_OS_IPHONE && TARGET_IPHONE_SIMULATOR | |
| // define something for simulator | |
| #elif TARGET_OS_IPHONE | |
| // define something for iphone | |
| #else | |
| #define TARGET_OS_OSX 1 | |
| // define something for OSX | |
| #endif | |
| #elif __linux | |
| // linux | |
| #elif __unix // all unices not caught above | |
| // Unix | |
| #elif __posix | |
| // POSIX | |
| #endif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #if defined(_WIN32) | |
| #define PLATFORM_NAME "windows" // Windows | |
| #elif defined(_WIN64) | |
| #define PLATFORM_NAME "windows" // Windows | |
| #elif defined(__CYGWIN__) && !defined(_WIN32) | |
| #define PLATFORM_NAME "windows" // Windows (Cygwin POSIX under Microsoft Window) | |
| #elif defined(__ANDROID__) | |
| #define PLATFORM_NAME "android" // Android (implies Linux, so it must come first) | |
| #elif defined(__linux__) | |
| #define PLATFORM_NAME "linux" // Debian, Ubuntu, Gentoo, Fedora, openSUSE, RedHat, Centos and other | |
| #elif defined(__unix__) || !defined(__APPLE__) && defined(__MACH__) | |
| #include <sys/param.h> | |
| #if defined(BSD) | |
| #define PLATFORM_NAME "bsd" // FreeBSD, NetBSD, OpenBSD, DragonFly BSD | |
| #endif | |
| #elif defined(__hpux) | |
| #define PLATFORM_NAME "hp-ux" // HP-UX | |
| #elif defined(_AIX) | |
| #define PLATFORM_NAME "aix" // IBM AIX | |
| #elif defined(__APPLE__) && defined(__MACH__) // Apple OSX and iOS (Darwin) | |
| #include <TargetConditionals.h> | |
| #if TARGET_IPHONE_SIMULATOR == 1 | |
| #define PLATFORM_NAME "ios" // Apple iOS | |
| #elif TARGET_OS_IPHONE == 1 | |
| #define PLATFORM_NAME "ios" // Apple iOS | |
| #elif TARGET_OS_MAC == 1 | |
| #define PLATFORM_NAME "osx" // Apple OSX | |
| #endif | |
| #elif defined(__sun) && defined(__SVR4) | |
| #define PLATFORM_NAME "solaris" // Oracle Solaris, Open Indiana | |
| #else | |
| #define PLATFORM_NAME NULL | |
| #endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment