我刚开始着手一个大项目,该项目应该是平台无关的,但实际上使用了一些实现定义的类型,例如char
。
这已经引起了一些问题,因为对于某些设备,char
默认为signed
,而对于其他设备则为unsigned
。
我希望找到一种解决方案,以避免在必须平台无关的代码中使用实现定义的类型。
- 最好的解决方案是什么?重新定义所有的char变量为
unsigned char
(或signed char
),使用编译器参数(例如:-funsigned-char),typedef
s,还是其他方法? - 是否有其他类型,标准没有定义它们是有符号还是无符号?
char
的符号性不是平台定义的,而是编译器定义的。因此,列在1
中的任何一个都可以。但我会选择显式类型声明。2)对于标准内置类型来说,不需要。 - Eugene Sh.