C전처리기에서 OS(OS X/리눅스/윈도우 등)을 감지하려면?

멀티 플랫폼을 지원하는 C/C++코드를 만들건데 전처리기에서 어떤 플랫폼을 쓰고 있는지 확인하려고 합니다. 어디서 관련 정보를 찾을 수 있나요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    대부분의 컴파일러에서 쓸 수 있는 매크로 리스트는 [여기], GCC 컴파일러에서 미리 정의된 매크로는 [여기]를 봐주세요

    gcc에 예제중

    #ifdef _WIN32
       //define something for Windows (32-bit and 64-bit, this part is common)
       #ifdef _WIN64
          //define something for Windows (64-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
    

    이 매크로는 컴파일러에 따라 결과가 달라집니다

    _WIN32는 32비트(x86)뿐 만 아니라 windows를 감지하기 때문에 The _WIN64 #ifdef 대신 _WIN32 #ifdef를 쓸 수도 있습니다

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.