c - 将 "char**"发送到 "const char**"函数参数

标签 c

假设我有一个函数签名:

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/

相关文章:

c - 程序的虚拟地址空间有多大?

c++ - 为什么在 C++ 头文件中使用 #ifndef 和 #define?

c - 关于C指针的疑惑

在 C 中将二维数组中的单个元素复制并比较到另一个数组

c - 这个结构的大小是多少?

c - 如何在xv6操作系统中运行c程序

c - 在此函数中未初始化使用

c++ - 在指定 C++ 异常和 pthread 取消的交互方面有什么进展吗?

c - C 中的“设备的 ioctl 不合适”错误

c - 两个不同程序中数据类型的复杂性有何区别?