ここでコピー/貼り付けの問題が少しあります。必要なビット数に基づいて型定義しているデータ型がいくつかあります。私は 8 ビット MCU を使用しているため、データが収まる最小の型を使用することが重要です。
コードは次のようになります。
#ifndef INT24_MAX
// For portability
typedef int32_t int24_t
#define int24_t int24_t
#endif
#if MY_BITS <= 8
typedef int8_t MY_TYPE_T;
#warning MY_TYPE_T is int8_t
#elif MY_BITS <= 16
typedef int16_t MY_TYPE_T;
#warning MY_TYPE_T is int16_t
#elif MY_BITS <= 24
typedef int24_t MY_TYPE_T;
#warning MY_TYPE_T is int24_t
#elif MY_BITS <= 32
typedef int32_t MY_TYPE_T;
#warning MY_TYPE_T is int32_t
#else
#error MY_TYPE_T is too big.
#endif
私はこれらの行が好きではありません:
typedef int16_t MY_TYPE_T;
#warning MY_TYPE_T is int16_t
int16_t と MY_TYPE_T はコピペなので。また、これを複数の変数で使用しているため、MY_TYPE_2_T と MY_TYPE_3_t に対して同じコードを繰り返しているため、コピー/貼り付けの問題があります (注: プロジェクトで実際にこれらの「MY_TYPE」に名前を付けていません)。
ビット数に基づいて型を型定義し、型に関するメッセージを出力するか、型が大きくなりすぎた場合にエラーを発生させる方法を探しています。
//Something like this
#define MY_BITS (10 + 2)
Int_BestFit(MY_TYPE_N, MY_BITS);