在windos平台wchar_t是2个字节,可以正好存放一个unicode字符,可是linux平台的wchar_t却是4个字节,导致windows平台和linux平台之间数据传递的时候可能会出现数据覆盖,加入windows平台定义了一个结构体,里面某个字段是WCHAR类型的数组,然后把头文件移动到linux平台编译,如果不重定义WCHAR会编译不通过,但是重定义WCHAR为short的话,linux平台的宽字符串操作因为一个字符占4个字节会覆盖其他字段,如果重定义WCHAR为wchar_t,会导致结构体大小不一致,还是有问题。好恶心。
为了让linux平台也能和windows通用宽字符,不得不重新写一套针对重定义的WCHAR的字符串操作。
要想规避上述问题,可以把结构体中的宽字符数组申请的时候可以申请大一倍,或者设置编译选项,听说过可以设置一些编译选项,但是目前还不清楚