我对char *作为参数有轻微的问题。我之前从未遇到过这个问题,但我似乎无法找到它为什么会发生这种情况。 “应该完全没问题”的一个小例子:
void foo(char* param)
{
return;
}
foo("hello world");
这不起作用,因为我们收到错误:
无法将参数1从'const char [12]'转换为'char *'
我环顾四周但找不到任何东西。我也尝试过改变字符集,但那无处可去。我创建了一个新项目,但同样的事情发生了。我在某个地方改变了设置吗?
我尝试添加适用于基本示例但不适用于我的模板的const
void Setup()
{
Find<MyClass>("function.dll", "function");
}
template <class i>
i* Find(const char* module, const char* name)
{
return nullptr;
}
这给了我一些我从未见过的东西:
从字符串文字转换失去const限定符(参见/ Zc:strictStrings)
答案 0 :(得分:2)
字符串文字是char const *
,而不是char *
。编译器在这里是正确的。如果你想要一个可修改的char数组,你可以这样做:
void foo(char *) { }
char buf[] = {"hello, world"};
foo(bar);