Windows编程陷阱之 *

1 篇文章 0 订阅
1 篇文章 0 订阅

一、 之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
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值