最近、私は雑種を書こうとしました。私のコードの多くの部分では、ユーザーの入力に基づいて決定する必要がありました。インスタンスの場合、ユーザー入力8ビットまたは16ビットに基づいてバッファタイプを選択する必要がありました。私はこのコードを実装し、それは私の仕事をした:ユーザの入力に応じて1回だけ決定するエレガントな方法はありますか?
if (requestedbitsNumber == 8)
mxMalloc(sizeof(unsigned __int8)*NumberOfElements);
if (requestedbitsNumber == 16)
mxMalloc(sizeof(unsigned __int16)*NumberOfElements);
今、私は疑問に思っては、ユーザの入力に応じて一度だけ決定するマクロや他の人のようなものを定義するためのエレガントな方法はありますか?このようなもの:
if (requestedbitsNumber == 8)
#define dataType unsigned __int8
if (requestedbitsNumber == 16)
#define dataType unsigned __int16
と使用するとdatType
が必要です。私は#define
がプリプロセッサディレクティブであり、コードがコンパイルされる前に使用されていることを知っています。 私はそれが私が何を意味するかを示すためだけに使用しました。ありがとう。
データ型は、あなただけ(あなたが 'はsizeofに設定され、いくつかの' size_t'変数を持つことができ、「保存」署名されていない__intX) '(Xは正しい番号です)。あるいは、単に 'mxMalloc(requestedbitsNumber/8 * NumberOfElements);'を実行してください。 – Cornstalks
バッファを作成する場所は正しいですか。しかし、特定のタイプのポインタにvoidポインタをキャストする必要があるのはどうでしょうか。 'myUin16Pointer =(unsigned __int16 *)myVoidPointer; 'のようなもの – GntS