首頁 >後端開發 >C++ >如何偵測C預處理器中的作業系統以進行跨平台開發?

如何偵測C預處理器中的作業系統以進行跨平台開發?

DDD
DDD原創
2024-12-26 01:34:09889瀏覽

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

在C 預處理器中偵測作業系統以進行跨平台開發

在預處理器階段確定底層作業系統對於跨平台開發至關重要平台C/C程式碼。幸運的是,大多數編譯器都定義了允許可靠檢測的特定巨集。

GCC 和Clang 巨集

GCC 和Clang 編譯器提供了可以使用的預定義巨集的完整清單用於作業系統識別:

  • 對於Windows:WIN32、_WIN32、 WIN32__、__NT
  • 對於 macOS:APPLE
  • 對 Linux:linux
  • 對於 Linux:linux
  • 對於
  • unix

對於 POSIX:_POSIX_VERSION

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

GCC 範例

  • GCC 範例
  • 以下是如何使用這些巨集中使用編譯:
重要注意事項預定義宏的可用性因所使用的編譯器而異。 建議使用巨集保護以避免多次包含標頭。 _WIN32(沒有底線)允許 IDE 突出顯示適用於 Windows 平台的程式碼部分。 Windows x64 編譯器仍然定義 _WIN32,因此它可以用作通用基礎,然後針對 64 位元特定使用內部 _WIN64 #ifdef定義。

以上是如何偵測C預處理器中的作業系統以進行跨平台開發?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn