確定C 中的32 位與64 位:綜合解決方案
簡介
確定C 程式碼的目標架構(32 位元或64 位元)對於確保程式碼相容性和最佳化效能至關重要。雖然最初的問題提出了一種基於巨集的方法來解決此問題,但存在潛在的局限性,需要更全面的解決方案。
巨集檢查的限制
所提議的巨集檢查依賴於 ULONG_MAX 和 UINT_MAX 的大小在 32 位元和 64 位元環境之間有所不同的假設。然而,這種假設在某些跨平台或特定於編譯器的場景中可能並不成立。
跨平台和編譯器不可知的解決方案
更可靠的方法是利用正在使用的特定編譯器提供的預定義巨集或編譯器標誌。這是一個適用於主要編譯器的全面解決方案:
// Check Windows #if _WIN32 || _WIN64 #if _WIN64 #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check GCC #if __GNUC__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif // Check Clang #if __clang__ #if __x86_64__ || __ppc64__ #define ENVIRONMENT64 #else #define ENVIRONMENT32 #endif #endif
其他注意事項
或者,某些編譯器允許直接從命令列設定這些變數:
-DENVIRONMENT64 for 64-bit -DENVIRONMENT32 for 32-bit
結論
透過採用提供的解決方案,開發人員可以跨各種平台和編譯器準確地確定其C 程式碼的目標架構,確保程式碼相容性和最佳效能。
以上是如何可靠地確定我的 C 程式碼是在 32 位元還是 64 位元架構上運行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!