当编写一个C语言库以便被其他语言调用并且可能编译到多个平台时,哪种类型最适合表示布尔值?
我不能在当前项目中使用C99,但如果可以的话,C99s bool是否合适?
修改 我倾向于unsigned char或unsigned int。是否有任何理由明确指定有符号或无符号,是否有助于避免任何歧义或陷阱或我应该只使用int?
但是,在查看我使用的一些第三方库以及有关C,C ++,Obj C的其他线程时,似乎大多数图书馆和语言设计者都有自己的想法,哪种类型最适合用于bool。
现在这不是问题,因为这个代码只用一个编译器为一个平台编译,但可能会在以后移植。
哪种是布尔类型的最佳选择,以最大限度地提高可移植性?
答案 0 :(得分:2)
当编写一个C语言库以便被其他语言调用并且可能编译到多个平台时,哪种类型最适合表示布尔值?
通常情况下,您会发现人们只需将其定义为int
,因为从计算的角度来看,这通常最有效(int
通常是平台的本机类型) 。但实际上,任何整数类型都可以工作;如果您特别关注内存使用情况,请使用char
。
我不能在当前项目中使用C99,但如果可以的话,C99s bool是否合适?
是!
我倾向于unsigned char或unsigned int,因为无符号零值在大多数情况下可能具有相同的表示形式?
我不知道如何回答这个问题;你为什么担心潜在的表现?