您的位置:首页 > 编程语言

Windows编程陷阱之 *

2015-05-31 10:30 197 查看

一、 之Unicode

昨天在用CodeBlocks以及MinGW系列编译器在编译一个wx项目时,编译器报出了“不能将const char * 转化为 const wchar_z *”这样的错误。这个错误我很熟悉,这是因为一个Unicode版的API函数(一般以W结尾,如CreateFileW),传入了一个char *类型的字符指针。但出错的位置是在wx的头文件里,而且形参中用了LPCTSTR这样的带宏检查的类型。编译器知道调用Unicode版的函数却不知道用Unicode版的指针!我们知道在Windows里编译器是通过_UNICODE这个宏来决定编译Unicode还是ANSI版本函数的,但_UNICODE这个宏对LPCTSTR这个类型不起作用。后来百度了一下才知道还有个UNICODE宏,于是在宏预定义里加入了UNICODE,就可以了。

小结:在Windows(g++)上编译Unicode代码时要加入_UNICODE和UNICODE两个宏的定义。

(如果已经配置好g++的编译选项则不用加)

<pre name="code" class="cpp">#ifdef _UNICODE
ret rn CreateDialogW(hInstance, pTemplate, hwndParent, pDlgProc);#else return CreateDialogA(hInstance, pTemplate, hwndParent, pDlgProc);#endif

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: