ホームページ > バックエンド開発 > C++ > 64 ビット Windows では「long」が 64 ビットではないのはなぜですか?

64 ビット Windows では「long」が 64 ビットではないのはなぜですか?

DDD
リリース: 2025-01-01 04:43:10
オリジナル
958 人が閲覧しました

Why Isn't 'long' 64 Bits on 64-bit Windows?

64 ビット Windows の 'long' のビット サイズ

疑問が生じます: なぜ 64 ビットでは 'long' が 64 ビットではないのですかWindowsのようなビットマシン?この記事では、さまざまなプラットフォームにおける整数のサイジングの歴史と影響について詳しく説明します。

整数のサイジングの歴史

Unix の世界では、64 の 2 つの主要な整数サイズの取り決めが存在します。ビット プラットフォームの登場: ILP64 (int、long、ポインタは 64 ビット) および LP64 (long、ポインタは 64 ビット) 64ビット)。 ILP64 は、macOS X や Linux などの最新の 64 ビット Unix システムの標準となった LP64 を支持して廃止されました。

Microsoft の LLP64 スキーム

Microsoft は LLP64 ( long long、ポインタは 64 ビットです) 64 ビット Windows の場合、再コンパイルが可能です。変更なしの 32 ビット ソフトウェア。ただし、これは他の 64 ビット プラットフォームとは異なり、64 ビットの機能を活用するには追加のコード調整が必要です。

プラットフォーム中立の整数型

整数のサイジングをクロスさせるには-platform では、C99 標準では が提供されています。ヘッダー。プラットフォーム固有の整数型を提供します: int8_t、int16_t、int32_t、int64_t、uintptr_t、intmax_t。これらの型を利用すると、アプリケーションがさまざまな整数サイズに適応できるようになります。

Windows に関する考慮事項

Windows は LLP64 を使用するため、'long' が 32 のままであることに注意することが重要です。 64 ビット マシン上のビット。このため、プラットフォームに依存しない整数型から逸脱する可能性があるシステム型を利用する場合は注意が必要です。

結論

さまざまなプラットフォームでの整数サイズの微妙な違いを理解することは、開発には不可欠です。クロスプラットフォーム ソフトウェア。 のプラットフォームに依存しない整数型を利用します。システム タイプを慎重に処理すると、コードの移植性が確保され、潜在的な整数サイズの問題を回避できます。

以上が64 ビット Windows では「long」が 64 ビットではないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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