9

私はこれをグーグルで検索しましたが、ガイドライン、経験則、スタイルなどを見つけられないことに驚きました.Cで(符号付きまたは符号なし)整数を宣言するとき、プロセッサがintに対して定義するものをそのまま使用するか、または幅を指定できます (例: uint16_tint8_tuint32_tなど)。

デスクトップ/専用の C プログラムを実行するとき、幅を指定することが本当に重要でない限り (たとえば、「これは 32 ビット ID です」)、「デフォルトを使用する」傾向が非常に強かったです。

最近、より多くのマイクロコントローラーの作業 (pic18 と AVR) を行ったので、私はすべてのサイズを調整する傾向がありました。

そして今、私はいくつかの Pic32 コード (OS なし) に取り組んでいます。

int のサイズをいつ決定し、いつデフォルトを使用するかを決定するのに役立つルーブリック (もしあれば) を人々が定式化したことに興味がありますか? なぜ?

4

3 に答える 3

2

両方を使用する必要があります。

Misra ルールは優れていますが、すべてに適合するわけではありません。

pc プラットフォームでの組み込みソフトウェアのシミュレーションなど、クロスプラットフォームのコンパイルには、サイズ指定された型を使用する方が適しています。

printfただし、それでも、サイズの種類に対してサイズを考慮する必要があります。

uint32_t val;

printf("%d", val);
printf("%ld", (long)val);

最初のprintfものは多くの 32 ビット プラットフォームで動作しますが、int=16bit/long=32bit の多くの組み込みプラットフォームでは失敗します。

uint16_t len = strlen("text");

strlen の戻り値の型はよりも大きくなる可能性があるため、警告が生成される可能性がintあります。ここでは を使用することをお勧めします。intuint16_tint len

于 2013-07-18T09:45:54.210 に答える