好吧,我正在做一些Java-C集成,并且在整个C库中使用了werid类型映射(还有更多);
#define CHAR char /* 8 bit signed int */
#define SHORT short /* 16 bit signed int */
#define INT int /* "natural" length signed int */
#define LONG long /* 32 bit signed int */
typedef unsigned char BYTE; /* 8 bit unsigned int */
typedef unsigned char UCHAR; /* 8 bit unsigned int */
typedef unsigned short USHORT; /* 16 bit unsigned int */
typedef unsigned int UINT; /* "natural" length unsigned int*/
是否有任何正当理由不使用它们?并不是说
char
很快就会被重新定义。我可以想到:
for(uint8_t ii = 0; ii < len; ii++)
将提供可衡量的加速。
最佳答案
C标准没有指定整数类型的大小。它取决于编译器以及将在其上运行代码的处理器。
因此,为了获得最大的可移植性,最好有一个 header ,该 header 使用标准名称来指示该特定目标的每种类型的大小。
MISRA-C和其他人使用uint16_t,sint32_t等。格式较短,例如u16,s32也正在使用中。
关于#define v typedef:使用typedef强制编译器进行类型检查。