一个看似简单而又不简单的问题
在VC++定义一个Unicode字符串可以按如下方式定义:
(1)wchar_t ws[]=L"Hi!";
(2)unsigned short ws[]=L"Hi!";
这需要编译器能够对L处理,但如果编译器不支持L"Hi!"这种方式,如何在标准C中实现这一简单功能呢?
也就是定义一个可变大小的unsigned short数组,让编译器分配内存,我想到的一种笨方法:
#define WIDESTRING1(s) {s[0],0}
#define WIDESTRING2(s) {s[0],s[1],0}
#define WIDESTRING3(s) {s[0],s[1],s[2],0}
.....................................
#define WIDESTRINGN(s) {s[0],...,s[N-1],0}
这样定义,N肯定要限定在一定范围内,使用时就更麻烦了,还要知道字符串到底多长。
最好使用宏命令解决,而不要使用函数的方式实现,因为那样就不必问这个问题了。