假设我有一个函数签名:
bool func(const char** arrayOfStrings);
我有一个带有签名的辅助函数:
char** auxFunc(not relevant);
出于某种原因,我可以设法做到以下几点:
func(auxFunc(not relevant));
我收到编译器警告/错误:
错误:使用类型为“char *”的表达式初始化“const char *”会丢弃嵌套指针类型中的限定符
为什么这没有像我预期的那样工作,我该怎么办?
最佳答案
您要求编译器执行从 char **
到 const char **
的隐式转换,这很危险地违反了 const 正确性规则。这就是您从编译器中收到错误的原因。
阅读常见问题解答条目 here更好地理解这个问题(这里也有很多关于这个问题的答案)。
之后,您应该决定什么是适合您的情况的最佳解决方案:重新设计代码以消除问题或通过显式转换抑制错误。如果不更详细地了解您的设计/代码(您没有提供),没有人可以为您做这件事。
关于c - 将 "char**"发送到 "const char**"函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20365383/