開發(fā)跨平臺程序時,有時需要根據(jù)不同操作系統(tǒng)編寫不同的代碼,在編譯的時候得選擇不同的代碼進(jìn)行編譯.
例子
QString ShaderLoader::getVert()
{
#ifdef __x86_64__
return ":/shader/vert.vsh";
#elif defined __aarch64__
return ":/shader/vert_es.fsh";
#else
#error "unknown platform"
#endif
}
判斷操作系統(tǒng)的宏
操作系統(tǒng) | 公共定義 | 64位系統(tǒng)定義 |
---|---|---|
Windows | _WIN32 | _WIN64 |
macOS | __APPLE__ | __LP64__ |
Linux | __linux__ | __LP64__ |
Android | __ANDROID__ | __LP64__ |
判斷平臺的宏
編譯器 | 編譯器定義 | x86指令集 | AMD64指令集 | ARM32指令集 | Thumb指令集 | ARM64指令集 |
---|---|---|---|---|---|---|
MSVC | _MSC_VER | _M_IX86 | _M_X64 | _M_ARM | _M_THUMB | _M_ARM64 |
GCC | __GNUC__ | __i386__ | __x86_64__ | __arm__ | __thumb__ | __aarch64__ |
Clang | __clang__ | __i386__ | __x86_64__ | __arm__ | __thumb__ | __aarch64__ |
參考
https://blog.virbox.com/?p=54
https://blog.csdn.net/qq_40340448/article/details/122117270