原帖 | 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的时候 ,明确其返回值对应的状态。
相关笔记