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 中国語 Web サイトの他の関連記事を参照してください。