error C2664:不能将参数 1 从“const char [13]”转换为“const ACHAR *” WHAT THE FUCK IS THIS ?

errorC2664:“acutPrintf”:不能将参数1从“constchar[13]”转换为“constACHAR*”1>与指向的类型无关;转换要求reinterp... error C2664: “acutPrintf”: 不能将参数 1 从“const char [13]”转换为“const ACHAR *”
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
项目属性已从“unicode”改为“使用多字节字符集”
展开
 我来答
loboho
推荐于2018-02-28 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:410万
展开全部
acutPrintf传参有问题,例如char sz[13] = "xxxxxx",你传成acutPrintf(&sz),应该是acutPrintf(sz)
追问
void HelloWorld()
{
acutPrintf(L" Hello! ");
}
void initApp()
{
acedRegCmds->addCommand(
L"Hello",
L"Hello",
L"Hello",
ACRX_CMD_MODAL,
HelloWorld);
}
void unloadApp()
{
acedRegCmds->removeGroup(L"Hello");
}

我盲从地加了“L”,OK了。
1 我想知道这是为什么?给出关键字我自己查就行
2 每次都得加“L”? 不能一劳永逸?
追答
哦,那还是unicode的 问题,acutPrintf接受的是wchar_t*类型的参数。
字符串常量前加L表示unicode字符串,既然上面那些接口固定只能接受unicode字符串参数,那定义字符串常量就要加L。
你可以定义 const wchar_t* HELLO = L"Hello",传参时用HELLO代替L"Hello"
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友13810cc
2012-12-14 · TA获得超过583个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:134万
展开全部
VS2008默认是UNICODE环境
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4569dc0
2012-12-14 · 超过19用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:34万
展开全部
acutPrintf传参有问题,例如char sz[13] = "xxxxxx",你传成acutPrintf(&sz),应该是acutPrintf(sz)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式