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])

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;
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *