>백엔드 개발 >C++ >크로스 플랫폼 개발을 위해 C 전처리기에서 운영 체제를 어떻게 감지할 수 있습니까?

크로스 플랫폼 개발을 위해 C 전처리기에서 운영 체제를 어떻게 감지할 수 있습니까?

DDD
DDD원래의
2024-12-26 01:34:09854검색

How Can I Detect the Operating System in the C Preprocessor for Cross-Platform Development?

교차 플랫폼 개발을 위해 C 전처리기에서 운영 체제 감지

전처리기 단계에서 기본 운영 체제를 결정하는 것은 교차 플랫폼 개발에 매우 ​​중요합니다. 플랫폼 C/C 코드. 다행스럽게도 대부분의 컴파일러는 안정적인 감지를 허용하는 특정 매크로를 정의합니다.

GCC 및 Clang 매크로

GCC 및 Clang 컴파일러는 사용할 수 있는 사전 정의된 매크로의 포괄적인 목록을 제공합니다. OS 식별용:

  • Windows의 경우: WIN32, _WIN32, WIN32__, __NT
  • macOS의 경우: APPLE
  • Linux의 경우: linux
  • Unix의 경우: unix
  • POSIX의 경우: _POSIX_VERSION

GCC의 예

다음은 이러한 매크로가 어떻게 사용될 수 있는지에 대한 예입니다. GCC에서 활용 컴파일:

#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
  // Define something for Windows (32-bit and 64-bit)
  #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, tvOS, or watchOS Simulator
  #elif TARGET_OS_MACCATALYST
    // Mac's Catalyst (ports iOS API into Mac, like UIKit).
  #elif TARGET_OS_IPHONE
    // iOS, tvOS, or watchOS device
  #elif TARGET_OS_MAC
    // Other kinds of Apple platforms
  #else
    #error "Unknown Apple platform"
  #endif
#else
  #error "Unknown compiler"
#endif

중요 고려 사항

  • 사전 정의된 매크로의 가용성은 사용되는 컴파일러에 따라 다릅니다.
  • 사용하는 것이 좋습니다. 헤더가 여러 개 포함되는 것을 방지하기 위한 매크로 보호.
  • _WIN32 (밑줄 없음)을 사용하면 IDE가 Windows 플랫폼에 적합한 코드 섹션을 강조 표시할 수 있습니다.
  • Windows x64 컴파일러는 여전히 _WIN32를 정의하므로 공통 기반으로 사용한 다음 64-에 대해 내부 _WIN64 #ifdef를 사용할 수 있습니다. 비트별 정의.

위 내용은 크로스 플랫폼 개발을 위해 C 전처리기에서 운영 체제를 어떻게 감지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.