c – 使size_t和wchar_t可移植吗?

前端之家收集整理的这篇文章主要介绍了c – 使size_t和wchar_t可移植吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
据我所知,size_t和wchar_t的表示完全是特定于平台/编译器的.例如,我已经读过 Linux上的wchar_t现在通常是32位,但在Windows上它是16位.有没有什么方法可以在我自己的代码中将这些标准化为一组大小(int,long等),同时仍然保持与两个平台上现有标准C库和函数的向后可比性?

我的目标基本上是做类似的设置,因此它们是一组尺寸.这可能不会破坏某些东西吗?我应该这样做吗?有没有更好的办法?

更新:我想这样做的原因是我的字符串编码在Windows和Linux上都是一致的

谢谢!

解决方法

您不想重新定义这些类型.相反,您可以使用typedef,如int32_t或int16_t(带符号的32位和16位),它们是< stdint.h>的一部分.在C标准库中.

如果您正在使用C,则C 0x将添加char16_t和char32_t,它们是用于UTF-16和UTF-32的新类型(不仅仅是用于整数类型的typedef).

对于wchar_t,另一种方法是使用像ICU这样的库,它以独立于平台的方式实现Unicode.然后,您可以使用UChar类型,它始终是UTF-16;你仍然需要注意字节序. ICU还提供往返于UChar(UTF-16)的converters.

猜你在找的C&C++相关文章