プロジェクトで固定長整数型に切り替えた主な理由は、使用時に整数サイズについてより明確に考えるのに役立つからです。それらを介して含める#include <inttypes.h>
と、印刷マクロなどの他のマクロも多数含まれPRIu32
ますPRIu64
...
定数値を固定長変数に代入するには、UINT32_C()
や などのマクロを使用できますINT32_C()
。定数値を代入するたびに、それらを使い始めました。
これにより、次のようなコードが生成されます。
uint64_t i;
for (i = UINT64_C(0); i < UINT64_C(10); i++) { ... }
今、私はそれを気にしないいくつかの例を見ました. 1 つはstdbool.h
インクルード ファイルです。
#define bool _Bool
#define false 0
#define true 1
bool
私のマシンではサイズが 1 バイトなので、int
. ただし0
、 and1
は、コンパイラによって自動的に適切な型に変換される整数である必要があります。私の例でそれを使用すると、コードははるかに読みやすくなります。
uint64_t i;
for (i = 0; i < 10; i++) { ... }
では、いつ固定長定数マクロを使用する必要がUINT32_C()
あり、いつその作業をコンパイラーに任せるべきですか (私は GCC を使用しています)? MISRA C でコードを書くとどうなりますか?