2012-03-14 7 views

答えて

4

他のシステムと通信する必要があり、データの長さを確認する必要がある場合。

たとえば、番号をディスクに保存します。どのくらいディスク上にあるのですか? unsigned intの場合、応答は "コンパイラ、OSに依存します..."です。 uint32_tでは32ビット(「標準」アーキテクチャでは4バイト)です。

+0

もし 'unsigned int'を使っても問題が起こらないことがわかったら' uint32_t'を 'unsigned int'で置き換えることができますか?著者は 'stdint.h '型と組み込み型の両方を使うソースコードを読んだだけです。 –

+1

@ PJ.Hades問題は、 'unsigned int'の長さは石で書かれていないということです。例えば、32-> 64ビットの間に、いくつかのOS /コンパイラは 'unsigned int'を64ビット長にすることを選択しました。応答は "それは依存する"です。私はコードを参照する必要があります:-) – xanatos

+0

私は参照してください。組み込み型の幅はコンパイラとOSの実装に依存しますが、 'stdint.h'型はそれほど長いことが保証されています。ありがとう:) –

3

整数のサイズと符号が実際に重要な場合。あなたがuint32_t値を配信するファイルまたはソケットを持っていて、それを(ポータブルな方法で)読みたいとします。ちょうどunsigned intの値を読むのは正しいかもしれませんが、ひどく間違っているかもしれません。

0

<stdint.h>を使用する(または独自の代理人にする)ことは、組み込み開発では非常に一般的です。それは、可変サイズとメモリ使用をより明白にし、移植をもっと簡単にします。 デスクトップソフトウェアをC言語で書くときに埋め込み開発から慣れてきたので、私自身が<stdint.h>を使っています。変数のサイズを考えると、オーバーフローのケースなども考えられます。

<stdint.h>定義型を使用するときれいです。すべてのものが移植性が高く、ソースコードがスタック/ヒープ割り当て。容認されている、それはメモリが制約されたシステムでより意味をなさないが、私はまだそれが良い習慣だと思う。

関連する問題