警告:从不兼容的指针类型传递 '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);
}
如果变量声明为:
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);
}