我始终将char
用作unsigned char
,将wchar_t
用作wint_t
。鉴于此,是否存在一个解决方案来更改函数接口以使用这些类型有或没有重新编译glibc?另请参阅此问题:How to change wchar.h to make wchar_t the same type as wint_t?
答案 0 :(得分:3)
您可以将命令行选项传递给编译器,以使char
默认无符号。通过使用宏和typedef重新定义char
来更改接口到标准库函数不是实现目标的正确方法。
对于gcc和clang,请使用-funsigned-char
。
对于Visual-C ++,请使用-J
或/J
。
宽字符类型wchar_t
是特定于系统的,它通常在Linux系统上使用32位宽,无论使用何种glibc,但由于历史原因,Microsoft工具只有16位宽。更改此类型将导致编译器和库之间的兼容性问题,甚至不考虑它。