wchar_t 和 char 编程问题
windows 编程遇见最多问题莫过于这俩字符编码格式了。 有时候工程中用unicode 编码。而调用一些老版本的库 这些库采用多字符编码。在用时需要使用到WideCharToMultiByte 函数进行转换。 一次我在合别人代码到工程中时候看到广泛采用"char"形式的字符串,然后在较高版本的vs 中工程基本都是 unicode 编码。
1> 一种方法是 把原先代码编译成库函数直接调用 改动少;
2> 另一种方法是更改源代码系统调用函数为多字符 微软一般系统调用有两种形式,采用宏定义在不同平台使用系统调用;
FuctionNameA(...)
FuctionNameW(...)
#ifdef _UNICODE
#define FuctionName FuctionNameW
#else
#define FuctionName FuctionNameA
#endif
所以只能显示的更改函数FuctionName =》 FuctionNameA 完成转化。
3> 使用TCHAR类型 头文件<tchar.h>。
#ifdef _UNICODE
#define TCHAR wchar_t
#define _T (x ) L ## x
...
#else
#define TCHAR char
#define _T (x ) x
...
#endif
... 为相应字符集操作函数宏定义 所有函数在博客http://blog.sina.com.cn/s/blog_4e3c6b480100r5go.html 中可以查阅。
更改后以后在windows 编程无论ascall 还是unicode 都可以拿出来直接使用方便。
总结:使用windows api 编程最好规范,要不一改再改浪费时间。windows编程建议使用TCHAR