linux和gcc中的16位wchar\t支持

linux和gcc中的16位wchar\t支持,linux,gcc,wchar-t,Linux,Gcc,Wchar T,我正在从事一个符合-fshort-wchar标志的跨平台项目 因此,wchar\u t类型是2字节。在Windows上这很好,但在Linux上这意味着没有像printf或fprintf这样的libc函数 一段时间以来,我一直在寻找一个好的解决方案,坦率地说,我有点绝望 除了完全避免使用libc函数之外,还有人有什么好主意吗 一个#ifdef中的这个可能会有所帮助(不过我还没有测试过): 如果使用宽字符,则必须使用而不是printf。问题是在linux(gcc)中,wprintf仅适用于32位wc

我正在从事一个符合
-fshort-wchar
标志的跨平台项目 因此,
wchar\u t
类型是2字节。在Windows上这很好,但在Linux上这意味着没有像
printf
fprintf
这样的libc函数

一段时间以来,我一直在寻找一个好的解决方案,坦率地说,我有点绝望

除了完全避免使用libc函数之外,还有人有什么好主意吗

一个
#ifdef
中的这个可能会有所帮助(不过我还没有测试过):


如果使用宽字符,则必须使用而不是
printf
。问题是在linux(gcc)中,wprintf仅适用于32位wchar\u t,这是因为
wchar\u t
的表示形式取决于平台和区域设置。您的程序使用的版本必须与您的libc支持的版本匹配。阅读了解更多信息。为什么要获得一个与16位wchar\t一起工作的libc实现?
typedef __u16 wchar_t16;