【发布时间】:2010-10-06 21:30:15
【问题描述】:
据我了解,size_t 和 wchar_t 的表示完全是特定于平台/编译器的。例如,我读过 Linux 上的 wchar_t 现在通常是 32 位,但在 Windows 上是 16 位。有什么方法可以在我自己的代码中将它们标准化为设定的大小(int、long 等),同时仍然保持与两个平台上现有标准 C 库和函数的向后可比性?
我的目标本质上是对它们进行 typedef 之类的操作,以使它们具有固定的大小。在不破坏某些东西的情况下这可能吗?我应该这样做吗?有没有更好的办法?
更新:我想这样做的原因是我的字符串编码在 Windows 和 Linux 上都是一致的
谢谢!
【问题讨论】:
-
用术语谈论一个矛盾:“将它们标准化为设定的大小(int、long 等)”使它们与直接使用 size_t 和 wchar_t 一样可变。
-
wchar_t用于 C 与 C++ 之间存在巨大差异。您需要确定您要使用哪种语言。 -
为我的目的标准化。我想知道我在两个平台上运行的代码使用相同大小的项目。
-
其中一个要点是,您无需关心它们的表示形式或特定于平台的大小。为什么你的代码需要它们的大小相同?
-
我想避免 Windows 的 UTF-16 与 Linux 的 UTF-32 的头痛