在 Mac OS X 系统上查看文件 wchar.h 时,我发现当未定义 __cplusplust 且 wchar_t 的最大大小为 2 个字节(通过使用编译器选项 -fshort )时,wchar_t 相当于 str 函数(例如 wcscpy、wcscat)会中毒。 -wchar)。
看来对于C程序来说,如果定义了-fshort-wchar,则不允许使用此类函数。我想知道使用 -fshort-wchar 时使用 wchar_t 函数有何含义?
您可能想知道为什么我需要使用 -fshort-wchar。因为,我正在移植最初为 Windows 编写的应用程序,其中 wchar_t 的大小为两个字节。 wchar_t 字符串中保存的数据将写入文件并在两个应用程序之间交换。
处理 wchar_t 在不同平台上的可变性的好方法是什么? Windows 上的假设是 wchar_t 是 16 位。
-fshort-wchar
如果您想使用正确的(32 位)定义与标准库或第三方库代码的任何部分进行交互,则不可用wchar_t
。它可行的情况非常有限,并且可能主要涉及独立实现/嵌入式内容。
在移植您正在处理的 Windows 应用程序的情况下,我认为您应该只执行 Seach-and-replace 来更改这些用途wchar_t
to WCHAR
(您可以自由定义)或char16_t
(由 C11 定义,您可以在 C11 之前提供自己的定义)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)