从使用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,则必须特别注意确保将签名字符用于函数返回值,该值可以为负数以指示错误。
从上面的描述中,我认为int
比int
更合适,因为long
始终符合架构的字大小。
答案 0 :(得分:3)
FreeRTOS coding standard不同意您的提及。
实际要求是使用由RTOS定义的typedef,或stdint.h
中的整数typedef,例如uint32_t
。通常,stdint.h
中的类型是可以接受的,因为这些整数的大小在不同的体系结构上不会有所不同。
答案 1 :(得分:0)
不是任何官方回答,我认为他们想确保他们的类型是明确定义的,因此决定使用3种类型:char
(uint8_t
),{{1 (short
)和unit16_t
(long
)。这样就可以避免对uint32_t
的大小有什么困惑。