swprintf为2字节wchar_t

时间:2015-02-26 19:34:58

标签: c linux unix

如何让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;,但我不想走那条路。

我还想避免手动将字节复制到另一个数组中,因为那时我不得不担心字节序,这也会增加时间和空间的复杂性。

0 个答案:

没有答案