0

在编写一个 C 库以供其他语言调用并可能编译到多个平台时,哪种类型最适合表示布尔值?

我不能在当前项目中使用 C99,但如果可以,C99s bool 是否合适?

编辑: 我倾向于 unsigned char 或 unsigned int。是否有任何理由明确指定有符号或无符号,是否有助于避免任何歧义或陷阱,还是我应该简单地使用 int?

但是,当查看我使用的一些第三方库和其他关于 C、C++、Obj C 的线程时,似乎大多数库和语言设计者对哪种类型最适合用于 bools 有自己的想法。

现在这真的不是问题,因为此代码仅使用一个编译器为一个平台编译,但它可能稍后会被移植。

哪个是布尔类型以最大限度地提高可移植性的最佳选择?

4

1 回答 1

2

在编写一个 C 库以供其他语言调用并可能编译到多个平台时,哪种类型最适合表示布尔值?

通常,您会发现人们只是将其 typedef 为int,因为从计算的角度来看,这通常是最有效的(int通常是平台的本机类型)。但实际上,任何整数类型都可以。如果您特别关心内存使用情况,请使用char.

我不能在当前项目中使用 C99,但如果可以,C99s bool 是否合适?

是的!

我倾向于 unsigned char 或 unsigned int 因为值 unsigned zero 在大多数情况下可能具有相同的表示?

我不知道如何回答这个问题;你为什么关心底层的表示?

于 2013-01-08T14:16:08.503 回答