16 ビット長でなければならない変数があります。プラットフォーム上で独立して正確に 16 ビットになるように定義するにはどうすればよいですか?
と定義できますshortが、プラットフォームによっては 16 ビット以上になる場合があります。
<stdint.h>とint16_tが利用できない場合、回避策はビットフィールドである可能性があります。ビットフィールドは構造体または共用体の内部でのみ有効であるため、1 つにラップする必要があります。
#include <stdio.h>
struct auw {
int sixteen :16;
};
int main(void)
{
struct auw one = {16*1024 }, two, result;
two = one; /* assigmment is easy*/
/* but addition is a bit more painful */
result.sixteen = one.sixteen + two.sixteen -1;
printf("Result=%d\n", (int) result.sixteen );
return 0;
}
ポータブルな符号なし 16 ビット整数が必要な場合は、 と を使用uint16_tし、符号付き 16 ビット整数の場合は を使用しますint16_t。
inttypes.hとstdint.hは両方とも で紹介されていC99ます。を使用している場合はC89、独自の型を定義する必要があります。