为什么FreeRTOS使用short和long类型,而不是int类型?

时间:2015-08-30 15:29:13

标签: c freertos

使用FreeRTOS实时内核 - 标准版,第143页,我注意到:

  从不使用

int类型 - 只有长和短

我想知道原因,但我在官方网站上找不到答案,谷歌后没有结果。

更新08/31:

也许我的问题不是那么清楚,简而言之,我只是想知道为什么FreeRTOS将BaseType_t定义为long而不是int(而其他FreeRTOS定义的类型永远不会使用{{ 1}},也是)。在其Coding-Standard-and-Style-Guide页面上,它说:

  

BaseType_t

     

这被定义为架构中最有效,最自然的类型。例如,在32位架构上,BaseType_t将被定义为32位类型。在16位架构上,BaseType_t将被定义为16位类型。如果将BaseType_t定义为char,则必须特别注意确保将签名字符用于函数返回值,该值可以为负数以指示错误。

从上面的描述中,我认为intint更合适,因为long始终符合架构的字大小。

2 个答案:

答案 0 :(得分:3)

FreeRTOS coding standard不同意您的提及。

实际要求是使用由RTOS定义的typedef,或stdint.h中的整数typedef,例如uint32_t。通常,stdint.h中的类型是可以接受的,因为这些整数的大小在不同的体系结构上不会有所不同。

答案 1 :(得分:0)

不是任何官方回答,我认为他们想确保他们的类型是明确定义的,因此决定使用3种类型:charuint8_t),{{1 (short)和unit16_tlong)。这样就可以避免对uint32_t的大小有什么困惑。