stdint.h
は、指定された幅を持つ整数型を定義します。これらのタイプはいつ使用しますか?たとえば、unsigned int
の代わりにuint32_t
?基礎となる機械を考慮せずに希望のタイプを得ることができるからですか?いつstdint.hで定義された整数型を使うべきですか?
4
A
答えて
4
他のシステムと通信する必要があり、データの長さを確認する必要がある場合。
たとえば、番号をディスクに保存します。どのくらいディスク上にあるのですか? unsigned int
の場合、応答は "コンパイラ、OSに依存します..."です。 uint32_t
では32ビット(「標準」アーキテクチャでは4バイト)です。
3
整数のサイズと符号が実際に重要な場合。あなたがuint32_t
値を配信するファイルまたはソケットを持っていて、それを(ポータブルな方法で)読みたいとします。ちょうどunsigned int
の値を読むのは正しいかもしれませんが、ひどく間違っているかもしれません。
0
<stdint.h>
を使用する(または独自の代理人にする)ことは、組み込み開発では非常に一般的です。それは、可変サイズとメモリ使用をより明白にし、移植をもっと簡単にします。 デスクトップソフトウェアをC言語で書くときに埋め込み開発から慣れてきたので、私自身が<stdint.h>
を使っています。変数のサイズを考えると、オーバーフローのケースなども考えられます。
<stdint.h>
定義型を使用するときれいです。すべてのものが移植性が高く、ソースコードがスタック/ヒープ割り当て。容認されている、それはメモリが制約されたシステムでより意味をなさないが、私はまだそれが良い習慣だと思う。
関連する問題
- 1. 強く型付けされたビューはいつ使うべきですか?
- 2. テンプレート引数で定義された型を使用する
- 3. C(stdint.h)の正確な幅の整数型
- 4. 整数型の類義語ですか?
- 5. Javaで配列定数で定義された列挙型
- 6. 配列定数で定義された列挙型
- 7. 関数型インターフェイスで定義された呼び出し関数
- 8. なぜDの整数型は未定義ではなく固定されていますか?
- 9. validationorルーティングでparameters.iniで定義された変数を使用できますか?
- 10. 整数をPythonで定義されたサイズのより小さい整数に分割する
- 11. retretype型の関数でcfreturnを使うべきですか
- 12. 方法:関数から返された型定義を使用しますか?
- 13. Puppetでは、定義された型の中の変数/属性にどのようにアクセスできますか?
- 14. setUpClassはいつ使うべきですか?__init__を使うべきですか?
- 15. いつphpでセッション変数を使うべきですか?
- 16. static_castを使用しないで、厳密に型指定された列挙型を整数で初期化できるのはなぜですか?
- 17. OCamlの型定義で後に宣言された型を使用します。
- 18. 定義されていないユーザー定義型とは何ですか?
- 19. Enum.Isフラグ付き列挙型で定義されています
- 20. C関数で定義されたFortran派生型コンストラクタ
- 21. 列挙型で定義されたアイテムの総数
- 22. 合計が指定された整数より大きい整数の最小セットを見つけよう
- 23. htmlにjQueryで定義された変数を使用できない
- 24. C#では、いつ構造体を使うべきですか?クラスはいつ使うべきですか?
- 25. いつこれをメソッドで使うべきですか?
- 26. なぜWindowsで定義されたデータ型を使用しますか?
- 27. - マップでどのように型を定義できますか?
- 28. 1つのデータ型を使用してCで複数の関数を定義できますか?
- 29. Rails設定ファイルで定義された定数をどのように再定義するのですか?
- 30. PHPのmysqli_real_escape_string()関数をいつ使うべきですか?
もし 'unsigned int'を使っても問題が起こらないことがわかったら' uint32_t'を 'unsigned int'で置き換えることができますか?著者は 'stdint.h '型と組み込み型の両方を使うソースコードを読んだだけです。 –
@ PJ.Hades問題は、 'unsigned int'の長さは石で書かれていないということです。例えば、32-> 64ビットの間に、いくつかのOS /コンパイラは 'unsigned int'を64ビット長にすることを選択しました。応答は "それは依存する"です。私はコードを参照する必要があります:-) – xanatos
私は参照してください。組み込み型の幅はコンパイラとOSの実装に依存しますが、 'stdint.h'型はそれほど長いことが保証されています。ありがとう:) –