宏定义C typedef

时间:2016-07-18 16:38:37

标签: c embedded xc8

我这里有一些复制/粘贴问题。 我有一些数据类型,我根据我需要的位数来确定类型。我使用的是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之前重复相同的代码,因为我在那里有重复/粘贴问题(注意:实际上没有在项目中命名这些&#34; MY_TYPE&#34;)

我正在寻找一种基于位数输入类型的方法,并输出关于该类型的消息,或者如果类型变得太大则给出错误。

//Something like this
#define MY_BITS (10 + 2)
Int_BestFit(MY_TYPE_N, MY_BITS);

0 个答案:

没有答案