wxWidgets随笔(5)-utf8中文(1)

wxWidgets 3.0弃用了wxT()和_T()宏,可以直接使用wchar_t。c_str()返回代理对象,不适合传递给vararg函数,可能导致编译错误或运行时崩溃。推荐使用wxWidgets的API并更新编译器设置以避免问题。
摘要由CSDN通过智能技术生成

在wxWidgets 3.0中对Unicode的支持已经发生了根本的变化,很多与以前版本的库相关的现有资料已经不再正确。
臭名昭著的宏wxT()和_T()不再需要了。基本上,您可以从任何使用它们的代码中删除它们。另一方面,保留它们也没有什么特别的危害,因为代码仍然可以正确地编译和工作——您只需要在您认为没有它们的代码看起来更整洁时删除它们。您也不再需要使用wxChar,但是可以直接使用标准的wchar_t类型,即使wxChar仍然可以工作。
c_str()方法的返回类型改变:它返回一个特殊的代理对象,而不是简单的char或wchar_t。因此,您不能将其结果传递给任何标准的vararg函数(如printf()),正如unicode相关的编译错误中所描述的那样。所有wxWidgets函数,如wxPrintf()、wxLogMessage()和c仍然可以使用它,但是将它传递给printf()将导致崩溃。强烈建议使用编译器重新编译您的代码,编译器会警告将非pod对象传递给vararg函数,比如g++。
wxString::c_str()类型的改变也会导致编译错误,因为它会将结果传递给一个重载的函数来同时获取窄字符串和宽字符串,在这种情况下,你必须选择你真正想要使用的版本,例如:

void OpenLogFile(const char *filename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值