c – 使size_t和wchar_t可移植吗?

c – 使size_t和wchar_t可移植吗?,第1张

概述据我所知,size_t和wchar_t的表示完全是特定于平台/编译器的.例如,我已经读过 Linux上的wchar_t现在通常是32位,但在Windows上它是16位.有没有什么方法可以在我自己的代码中将这些标准化为一组大小(int,long等),同时仍然保持与两个平台上现有标准C库和函数的向后可比性? 我的目标基本上是做类似的设置,因此它们是一组尺寸.这可能不会破坏某些东西吗?我应该这样做吗?有 据我所知,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 – 使size_t和wchar_t可移植吗?全部内容,希望文章能够帮你解决c – 使size_t和wchar_t可移植吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1234361.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存