c - 从不兼容的指针类型传递 arg 1 of `foo'

标签 c gcc ansi-c

为什么显示警告:

#include<stdio.h>
foo (const char **p)
{ 

}

int main(int argc , char **argv)
{
    foo(argv);
}

但是下面没有显示任何警告

char * cp;
const char *ccp;
ccp = cp;

第一个代码片段显示警告从不兼容的指针类型传递 foo 的 arg 1。但第二个片段没有显示任何警告。两者都是 const 指针

最佳答案

请参阅C FAQ list

您可以转换以删除警告:

foo((const char **)argv);

但正如常见问题解答所说:对这样的强制转换的需要可能表明强制转换并不能真正解决更深层次的问题。

关于c - 从不兼容的指针类型传递 arg 1 of `foo',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542641/

相关文章:

c - C 中将 malloc 的 2d 数组修改为 3d 数组的函数

c - C中具有精确长度的字符串的快速字符串比较

c++ - 从 c 转换为 c++ 时出现归档错误

将十六进制数数组转换为 unsigned char* for Inline::C

c - gcc 预处理器输出中以哈希符号和数字(如 '# 1 "a.c"')开头的行的含义是什么?

c++ - gcov-工具合并 : "not a gcov data file"

c++ - 简单的库问题 (C++)

C 矩阵乘法动态分配矩阵