104

Qtを使用したい場合はquint8、などを採用する必要がありますquint16

GLibを使用する場合は、welcomeguint8などを使用する必要がありますguint16

Linuxにはなどがありますu32s16

uC/OSは などを定義SINT32UINT16ています。

また、これらを組み合わせて使用​​する必要がある場合は、トラブルに備えたほうがよいでしょう。あなたのマシン上で何度も何度も何度も何度も繰り返し実行u32され、コンパイラは文句を言うからです。typedeflongquint32typedefint

あるとすれば、なぜ誰もがこれを行うの<stdint.h>ですか?これは図書館のある種の伝統ですか?

4

4 に答える 4

80

stdint.hこれらのライブラリが開発されていたときは存在しませんでした。そのため、各ライブラリは独自typedefの を作成しました。

于 2016-07-24T13:00:41.470 に答える
40

stdint.h古いライブラリの場合、問題のヘッダー ( ) が存在しなかったため、これが必要です。

ただし、まだ問題があります。これらの型 (uint64_tおよびその他の型) は、標準ではオプションの機能です。そのため、準拠する実装がそれらに同梱されていない可能性があります。そのため、ライブラリは現在でもそれらを含める必要があります。

于 2016-07-24T13:02:01.410 に答える
3

したがって、char を int に typedef する機能があります。

ある「コーディングの恐怖」は、ある会社のヘッダーには、プログラマーがブール値を必要とするポイントがあり、char はジョブの論理ネイティブ型であると述べていたため、typedef bool char. その後、誰かが整数が最も論理的な選択であることに気づき、typedef bool int. その結果、Unicode よりもずっと前に、事実上typedef char int.

かなり多くの前向きな考え方、前方互換性があると思います。

于 2016-07-25T10:36:59.827 に答える