原文链接:https://blog.csdn.net/qq_32348883/article/details/123063830
背景
为了更好的进行跨平台移植、编译、调试。
具体操作
宏操作
#ifdef _WIN32
//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 __ANDROID__
// do android something
#elif __linux__
// do linux something
#elif __unix__ // all unices not caught above
// do Unix something
#elif defined(_POSIX_VERSION)
// do POSIX something
#else
#error "Unknown compiler"
#endif
or 代码内操作
注意: 条件没有使能的编译内容,编译器不会对该内容进行错误检查。
#if defined(_WIN32)
std::cout << "this is win32 compiler" << endl;
#elif defined(_WIN64)
std::cout << "this is win64 compiler" << endl;
#elif defined(__linux__)
std::cout << "this is linux compiler" << endl;
#elif defined(__unix__)
std::cout << "this is unix compiler" << endl;
#elif defined(__ANDROID__)
std::cout << "this is android compiler" << endl;
#endif
附注QT .pro自动判断平台
QT 工程.pro内的宏自定义判断平台
unix {
TARGET = appname
}
macx {
TARGET = appname2
}
win32 {
TARGET = appname3
}