在C 開發中,存在一些場景,需要確定程式碼是否正在編譯為32位元或64 位元架構至關重要。雖然所提供的基於巨集的方法看起來合理,但讓我們探索潛在的缺點並考慮替代的跨平台策略。
提出的基於巨集的解決方案檢查 ULONG_MAX 和 UINT_MAX 的值,依賴以下假設:這些值對於 32 位元和 64 位元體系結構是不同的。然而,這種假設可能並不總是成立,尤其是在不同的編譯器或平台配置之間。
確保跨平台相容性和編譯器獨立性的另一種方法是從編譯器命令中明確定義所需的體系結構相關變數線。例如,可以使用以下預處理器指令:
#ifdef ENVIRONMENT64 Define architecture-specific operations for 64-bit #else Define architecture-specific operations for 32-bit #endif
要填充ENVIRONMENT64 或ENVIRONMENT32 變量,可以使用以下特定於平台的檢查:
// Check for Windows #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check for GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif
或者,這些可以使用- m64 或-m32 等標誌直接從編譯器命令列設定變數。這種方法在定義依賴體系結構的邏輯時提供了更多的控制和靈活性。
透過利用特定於編譯器的標誌或依賴平台的檢查,您可以可靠地確定 C 中的編譯體系結構,確保跨多個編譯器和平台。
以上是如何跨平台可靠地確定 C 語言中的 32 位元與 64 位元架構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!