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


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

  • 2016년 01월 24일에 작성됨

조회수 334


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를 쓸 수도 있습니다

  • 2016년 01월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close