wince+MFC error C2440: “=”: 无法从“const wchar_t *”转换为“LPWSTR”

nbhx2010 2014-12-16 09:31:12
wince + MFC程序,用了一个wince读取ini的文件
该文件别人用了好几年了,在我这里编译都通不过,但是就是找不出问题所在


BOOL IsKey(LPCWSTR pLine , LPCWSTR pKeyName, LPWSTR* pValue, DWORD* dwValLen )
{

*pValue = wcschr(pLine, '=' );

}


就这么一句代码,编译报错 :“error C2440: “=”: 无法从“const wchar_t *”转换为“LPWSTR””
怎么转化都没转化到可以编译通过。
*pValue = (T2W) wcschr(pLine, '=' ); --------这样也不行

整个项目的常规属性如下:
配置类型  : 应用程序(.exe)
MFC的使用: 在静态库中使用MFC
ATL的使用 : 不使用ATL
字符集 : 使用 Unicode 字符集
...全文
1186 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果里面没有涉及到空间分配感觉没必要指针的指针。 像BZ那样强制转换就可以了。LPWSTR 或者TCHAR *都一样。
nbhx2010 2014-12-16
  • 打赏
  • 举报
回复
引用 7 楼 91program 的回复:
以下代码,偶是编译通过了,LZ 你试试:

BOOL IsKey(LPCWSTR pLine,LPCWSTR pKeyName,LPWSTR* pValue,DWORD* dwValLen)
{
	*pValue = (TCHAR *)wcschr(pLine,'=');
	return TRUE;
}
哦,编译通过,我先试试看后续有没有问题,先谢了
91program 2014-12-16
  • 打赏
  • 举报
回复
以下代码,偶是编译通过了,LZ 你试试:

BOOL IsKey(LPCWSTR pLine,LPCWSTR pKeyName,LPWSTR* pValue,DWORD* dwValLen)
{
	*pValue = (TCHAR *)wcschr(pLine,'=');
	return TRUE;
}
nbhx2010 2014-12-16
  • 打赏
  • 举报
回复
需要赋值的,其实就是进这个函数来获取值并把这个值赋值给 pValue 调用IsKey函数前的使用如下:
LPWSTR pValue=NULL;
if (IsKey(pLine , lpKeyName, &pValue, &dwValLen))
{

 }
if语句的判断条件的就是调用了我一楼写的这个IsKey函数
  • 打赏
  • 举报
回复
不清楚,要修改必须知道你这个函数各个参数是否要输出,还有具体实现的东西。传递进来的指针是否已经分配了空间等。 我从一句话实在无法修改。
  • 打赏
  • 举报
回复
如果是LPCWSTR就可以。你弄清楚pValue是传进来做什么的,需要赋值吗?这不是字符集的问题。
nbhx2010 2014-12-16
  • 打赏
  • 举报
回复
引用 2 楼 accessysq 的回复:
wcschr 返回const wchar_t *, 一个const指针怎么能赋值给LPWSTR
该怎么修改?
  • 打赏
  • 举报
回复
wcschr 返回const wchar_t *, 一个const指针怎么能赋值给LPWSTR
nbhx2010 2014-12-16
  • 打赏
  • 举报
回复
补充说明: 函数 wcschr 的类型是 const wchar_t * 这个是系统函数

19,504

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧