警告:从不兼容的指针类型传递 'xyz' 的参数 x

warning: passing argument x of 'xyz' from incompatible pointer type

如果变量声明为:

char ** argv; 

函数的定义类似于:

extern int my_system(const char *argv[]);

现在,如果我们将函数中的参数传递为:

(my_system(argv))

然后它从不兼容的指针类型抛出警告 passing argument 1 of 'my_system'。

可能的解决方案是什么?

在 C 中,T**const T** 之间没有隐式转换,因为它不会在所有情况下阻止对最终元素的修改。有关 "backdoor" 修改的增强说明和示例,请参阅 C FAQ 的问题 11.10

在你的情况下,了解了复杂性,你可以将指针转换为静音警告:

extern int my_system(const char *argv[]);

int main(int argc, char* argv[])
{
    my_system((const char**)argv);
}