永发信息网

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

答案:3  悬赏:10  手机版
解决时间 2021-03-29 20:04
  • 提问者网友:两耳就是菩提
  • 2021-03-28 22:09
error C2664:不能将参数 1 从“const char [13]”转换为“const ACHAR *” WHAT THE FUCK IS THIS ?
最佳答案
  • 五星知识达人网友:怀裏藏嬌
  • 2021-03-28 23:20
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"
全部回答
  • 1楼网友:詩光轨車
  • 2021-03-29 01:06
acutPrintf传参有问题,例如char sz[13] = "xxxxxx",你传成acutPrintf(&sz),应该是acutPrintf(sz)
  • 2楼网友:迟山
  • 2021-03-29 00:49
VS2008默认是UNICODE环境
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来试试。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯