質問
何が最良の方法を宣言する整数タイプは常に4バイトの任意のフォ?私は気にしない特定の装置または古い機械である16ビット int
.
解決
#include <stdint.h>
int32_t my_32bit_int;
他のヒント
Cは整数型の正確なサイズにはあまり関心がありません。C99はヘッダーを導入しますstdint.h 、おそらくあなたの最善の策です。それを含めると、例えばint32_t
。もちろん、すべてのプラットフォームがそれをサポートしているわけではありません。
アルテミーシア湖の答えが正しいベスト"が、私の意見ですが、簡単な"int"もの作業実験実習(れん無視システムの16ビットのint).この時点で、ものすごいコードに依存intが32ビットのシステムベンダーがなく、今後どこへ向かおうとしているのです。
(なぜ長は32ビッ64ビットのシステムとして"長。)
一つの特典を利用int32_tであることのない継続す。
brg_types.h
を持っていない場合、ブライアングラッドマンのstdint.h
のコピーを探し出すことができます。
<=>は、プラットフォーム上のさまざまな整数のサイズを検出し、一般的なサイズ(8、16、32、64ビット)のtypedefを作成します。
inttypes.h
はSolarisなどの一部のプラットフォームでは使用できないため、stdint.h
の代わりにlong
を含める必要があります。また、Linuxなどのシステムではint
に<=>が含まれます。
<=>を含めると、LinuxとSolarisの間でコードの移植性が高まります。
このリンクは私が言っていることを説明しています: intlinks.hについてのHPリンク
>このリンクには、データ型に特定のビット数が存在することを意図している場合に<=>または<=>を使用したくない理由を示す表があります。 ポータブルデータタイプに関するIBMリンク
システムでstdint.hを使用できない場合は、独自に作成してください。 <!> quot; types.h <!> quot;というファイルが常にあります。すべての符号付き/符号なし8、16、および32ビット値のtypedefがあります。
ターゲットプラットフォームにもよりますが、ビルドシステムにautotoolsを使用できます
stdint.h / inttypes.hが存在するかどうかを確認し、存在しない場合は<!> quot; config.h <!> quot;で適切なtypedefを作成します
stdint.hは当然の選択ですが、必ずしも利用できるとは限りません。
移植性のあるライブラリを使用している場合、移植性のある固定幅整数を既に提供している可能性があります。
たとえば、SDLにはSint32
(Sは<!>#8220; signed <!>#8221;)があり、GLibにはgint32
があります。
C99以降
<stdint.h>
を使用します。
実装が2の補数の32ビット整数をサポートする場合、int32_t
を定義する必要があります。
そうでない場合、次に最適なのはint_least32_t
です。これは、表現(2の補数、1の補数など)に関係なく、少なくとも32ビットの実装でサポートされる整数型です。
int_fast32_t
もあります。これは、少なくとも32ビット幅の整数型であり、そのサイズ要件に対して最速の操作を可能にするために選択されています。
ANSI C
long
を使用できます。これは、標準で指定された最小範囲要件の結果として少なくとも32ビット幅であることが保証されています。
32ビット数に合わせて最小の整数型を使用する場合は、<limits.h>
で定義されたマクロで次のようなプリプロセッサステートメントを使用できます。
#define TARGET_MAX 2147483647L
#if SCHAR_MAX >= TARGET_MAX
typedef signed char int32;
#elif SHORT_MAX >= TARGET_MAX
typedef short int32;
#elif INT_MAX >= TARGET_MAX
typedef int int32;
#else
typedef long int32;
#endif
#undef TARGET_MAX