是否认同对于用uint8_t代替bool的规范

🔍 溯源 ✍️ Jack | 📅 2024-10-02 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/编码规范 #质量/普通

原帖 | Jack | 2024-10-02 11:32 | 👍0 | 阅读约1

是否认同对于用uint8_t代替bool的规范?例如ARM的CMSIS Driver库代码,均不使用bool,全是uint8_t替代。

认同的,
1,bool这个类型,在C99时才确定,但是不同的编译器对bool的支持不同,但是对uint8_t是支持的,使用uint8_t垮平台能力更强;
2,bool在某些平台有可能并不是1字节对齐的,还可能是4字节对齐(比如32位处理器),那么它如果4字节对齐,还可能浪费空间。
3,bool只能表示0或者1(不是真就是假),但是uint8_t能支持0到255,能够返回的状态更多,用在API里面更加合适,因为能返回更明确的API调用状态,而且也便于扩展。尤其是对于CMSIS这种通用接口库来说。

但是,uint8_t也不是没有缺点,它包含的数值比较多,因此也需要一定程度上的约束,即在设计API的时候 ,明确其返回值对应的状态。


相关笔记