C/C++ 判斷OS(windows/linux) ( C/C++ compiling on Windows and Linux: ifdef switch [duplicate])
C/C++ 判斷OS(windows/linux) ( C/C++ compiling on Windows and Linux: ifdef switch [duplicate])
資料來源: https://stackoverflow.com/questions/6649936/c-compiling-on-windows-and-linux-ifdef-switch
https://stackoverflow.com/questions/5919996/how-to-detect-reliably-mac-os-x-ios-linux-windows-in-c-preprocessor
範例測試編譯器:
https://www.tutorialspoint.com/compile_c_online.php
CodeBlocks 12.11
語法:[判斷作業系統/平台/os]
#ifdef __linux__ //linux code goes here #elif _WIN32 // windows code goes here #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
範例:
#include <stdio.h> #include <stdlib.h> /* //https://stackoverflow.com/questions/6649936/c-compiling-on-windows-and-linux-ifdef-switch #ifdef __linux__ //linux code goes here #elif _WIN32 // windows code goes here #else #endif */ int main() { #ifdef __linux__ //linux code goes here printf("Hello world LINUX!\n"); #elif _WIN32 // windows code goes here printf("Hello world WINDOWS!\n"); #else #endif return 0; }