如何让swprintf采用2字节的wchar_t?
我试过这个:
#include <wchar.h>
#undef wchar_t
#define wchar_t uint16_t
path_length = (strlen(host) + strlen(share) + 4);
wchar_t *path = (uint16_t*)malloc(path_length*sizeof(uint16_t));
swprintf(path, path_length, L"\\\\%s\\%s", host, share);
但是我得到了这个编译错误:
test.c:104:5: error: passing argument 1 of ‘swprintf’ from incompatible pointer type [-Werror]
In file included from test.c:13:0:
/usr/include/wchar.h:603:12: note: expected ‘wchar_t * restrict’ but argument is of type ‘uint16_t *’
我认为这与restrict关键字有关。 有没有更简单的方法来做到这一点?我需要一个2字节的wchar_t因为我试图生成一个16位的unicode字符串。
我知道编译器选项&#34; -fshort-wchar&#34;,但我不想走那条路。
我还想避免手动将字节复制到另一个数组中,因为那时我不得不担心字节序,这也会增加时间和空间的复杂性。