各个操作系统都有其对应的内置宏:
- Windows:
WIN32
、_WIN32
、_WIN32_
、WIN64
、_WIN64
、_WIN64_
- Linux:
_linux_
- Android:
ANDROID
、_ANDROID_
- Mac/iPhone:
_APPLE_
、TARGET_OS_IPHONE
、TARGET_IPHONE_SIMULATOR
、TARGET_OS_MAC
在C++代码中我们可以通过以下代码对不同操作系统的代码进行控制
#if defined(WIN32) || defined(_WIN32) || defined(_WIN32_) || defined(WIN64) || defined(_WIN64) || defined(_WIN64_)
// Windows平台代码
#elif defined(ANDROID) || defined(_ANDROID_)
// Android平台代码
#elif defined(__linux__)
// Linux平台代码
#elif defined(__APPLE__) || defined(TARGET_OS_IPHONE) || defined(TARGET_IPHONE_SIMULATOR) || defined(TARGET_OS_MAC)
// iOS、Mac平台代码
#else
// 其他平台代码
#endif
或者
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
//define something for Windows (32-bit and 64-bit, this part is common)
#ifdef _WIN64
//define something for Windows (64-bit only)
#else
//define something for Windows (32-bit only)
#endif
#elif __APPLE__
#include <TargetConditionals.h>
#if TARGET_IPHONE_SIMULATOR
// iOS Simulator
#elif TARGET_OS_IPHONE
// iOS device
#elif TARGET_OS_MAC
// Other kinds of Mac OS
#else
# error "Unknown Apple platform"
#endif
#elif __linux__
// linux
#elif __unix__ // all unices not caught above
// Unix
#elif defined(_POSIX_VERSION)
// POSIX
#else
# error "Unknown compiler"
#endif
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 跨平台开发,判断操作系统类型
原文链接:https://www.stubbornhuang.com/2939/
发布于:2024年01月02日 10:34:02
修改于:2024年01月04日 13:35:58
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50