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”改为“使用多字节字符集” 展开
1> 与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
项目属性已从“unicode”改为“使用多字节字符集” 展开
3个回答
展开全部
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"
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VS2008默认是UNICODE环境
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来试试。
所以把你所有字符串相关的操作都用_T() TEXT() 包含起来试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
acutPrintf传参有问题,例如char sz[13] = "xxxxxx",你传成acutPrintf(&sz),应该是acutPrintf(sz)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询