/*类型_s16.h基于用户提供的选项定义16位整数数据类型编译器提供的#定义了是否可用。我们几乎必须假设short是16位的有人可能会尝试编译我的代码,以获得8/16位微控制器,在这种情况下,短可能是8位。关于32位类型的注释在type_s32.h中*//*首先检查用户提供的选项*/#ifdef SHORT_IS_S16typedef有符号短s16;typedef无符号短u16;#定义HAVE_S16#elif INT_IS_S16typedef签名int s16;typedef无符号整数u16;#定义HAVE_S16#结尾/*如果我们的编译器是GCC,那么short几乎可以肯定是16位*/#如果定义__GNUC__typedef签署短s16;typedef无符号短u16;#定义HAVE_S16#结尾/*默认值*/#如果没有HAVE_S16typedef签署短s16;typedef无符号短u16;#定义HAVE_S16#结尾/*此宏提供了可以在运行时使用的代码(例如在开始时确保s16实际上是16位。它假设已包含。我们没有为你包括性病,因为也许你不想使用这个宏*/#ifndef类型_S16_CHECK_SIZE#定义TYPE_S16_CHECK_SIZE(进程名)\如果(sizeof(s16)!=2) { \printf(“%s:s16不是2个字节(得到%d)。\n”\(进程名),(int)sizeof(s16))\if(sizeof(short)==2){\打印(\“要修复此错误,请使用标记-DSHORT_IS_S16\n”)重新编译\}else if(sizeof(int)==2){\打印(\“要修复此错误,请使用标记DINT_IS_S16\n”)重新编译\}其他{\打印(\“(目前,sizeof(short)==%d,sizeof(int)==%d)\n”\(int)sizeof(短),(int)sizeof(int))\} \出口(-1)\}#结尾