"WCHAR *" 类型的实参与 "LPSTR" 类型的形参不兼容

本文解析了LPCSTR与constwchar_t*在Visual Studio 2013中的区别,LPCSTR指向的是以''结尾的8位ANSI字符数组,而constwchar_t*指向16位Unicode字符数组。文章提供了两种解决方案来避免类型不匹配的编译错误:一是修改项目属性以使用Unicode字符集;二是使用_T宏自动适配字符串格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过查看LPCSTR的定义:

typedef _Null_terminated_ CONST CHAR *LPCSTR, *PCSTR; 

可以知道LPCSTR代表了const char *类型,它是一个指向以'\0'结尾的8位(单字节)ANSI字符数组的常量指针,

而const wchar_t *类型是一个指向'\0'结尾的16位(双字节)Unicode字符数组的常量指针.

在VS2013编译器中直接输入的字符串常量(如“abc”)默认是以const char *的格式(即ANSI编码)储存的,因此会导致类型不匹配的编译错误。

解决的办法有两个:

第一个方法是右击“解决方案资源管理器”中的项目,“属性→配置属性→常规→项目默认值→字符集”,默认的选项是“使用多字节字符集”,将它改为“使用Unicode字符集”即可。

这样,输入的字符串会默认以const wchar_t *格式储存。

第二个方法是使用_T宏,它在“tchar.h”中定义,它能够自动识别当前编译器字符串的储存格式并做出相应转换,避免这种类型的编译错误。

具体使用方法为:将“abc”改为_T("abc")。

http://www.cnblogs.com/dbylk/p/3696367.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值