为什么Windows编程都用UNICODE

对于C++编程来说,无非ANSI和UNICODE,他们之间的区别这里就不赘述了,今天我们要说的士我为什么建议你用UNICODE进行编程。

1、有些基础的都应该知道,一般来说Windows函数都有两个版本,比如最常见的MessageBox有MessageBoxW和MessageBoxA,分别适用于两种字符集。可能你要说,你一直用的是MessageBox,那是因为你调用的知识一个宏

#ifdef _UNICODE
#define MessageBox MessageBoxW
#else
#define MessageBox MessageBoxA
#endif

其他的函数也是同理。

2、在Windows Visa版本中,应用程序最后执行的都是UNICODE版本的函数,如果你调用的是ANSI的,那么ANSI版本的函数只是作为一个转换层(分配内存,转换为UNICODE),然后执行UNICODE版本的函数。无意,使用ANSI会有更多的开销。

3、另外,在进行ANSI向UNICODE转换的过程中,一些Windows函数存在BUG,所以应该直接使用UNICODE来避免。

4、有一些函数是为了兼容之前的16位Windows程序,比如OpenFile,在调用这些函数后他们也会进行一些转换,最后调用新的函数,比如CreateFile,所以直接使用CreateFile会更高效。

5、COM接口方法只接受UNICODE

6、.NET Framework集成只接受UNICODE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值