ビット配列を構築するには、ビットセット型を定義する必要があります。これらの配列間で、and/or/xor などのビット操作を (たとえば、それらを比較するために) 実行することができ、それらが支配的な操作です。ビットセット型としてどの型を使用すればよいですか?
型は、コンパイラが処理できる最も広い NOT SIMULATED 型であるべきだと思います。つまり、コンパイラが 64 ビット型をシミュレートする場合 (マシンまたは OS がそれをサポートしていない場合など)、単純な and 間の複合操作をマスクして、代わりに 32 ビット型を使用する必要があります。それを決定する方法は?
その他の質問:
新しい c99 ヘッダーはいくつかの型 (正確な幅の整数型) を定義します。
「これらは intN_t と uintN_t の形式です。両方の型は、パディング ビットのない正確な N ビットで表す必要があります。intN_t は 2 の補数の符号付き整数としてエンコードし、uintN_t は符号なし整数としてエンコードする必要があります。実装が型をサポートしない限り、これらの型はオプションです。幅が 8、16、32、または 64 の場合、対応する N を使用して対応する型に型定義します。その他の N はオプションです。
64ビット型をチェックする実装は最初のステップだと思いますよね?
私のプロジェクトでは、#マクロを定義する SDL ライブラリを使用しています。
#ifdef SDL_HAS_64BIT_TYPE
typedef int64_t Sint64;
#ifndef SYMBIAN32_GCCE
typedef uint64_t Uint64;
#endif
#else
/* This is really just a hack to prevent the compiler from complaining */
typedef struct {
Uint32 hi;
Uint32 lo;
} Uint64, Sint64;
#endif
したがって、おそらくそのマクロに応じてビットセット型の定義を作成できます (ただし、sdl のコードを独立して記述したいので、これは最適ではありません)。
について意見を聞かせてください。