ホームページ > バックエンド開発 > C++ > 自分の C コードが 32 ビット アーキテクチャで実行されているか、64 ビット アーキテクチャで実行されているかを確実に判断するにはどうすればよいですか?

自分の C コードが 32 ビット アーキテクチャで実行されているか、64 ビット アーキテクチャで実行されているかを確実に判断するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-17 17:43:02
オリジナル
568 人が閲覧しました

How Can I Reliably Determine if My C   Code Is Running on a 32-bit or 64-bit Architecture?

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート