2013-12-16 40 views
0

为什么程序给出关于foo的参数的警告?如何解释有关参数传递给函数的警告

void foo(const char **p) 
{ 

} 

int main(int argc, char **argv) 
{ 
     foo(argv);   //problem is here 
     return 0; 
} 

的MinGW给出这样的华林:

warning : passing argument 1 of 'foo' from incompatible pointer type [enabled by default] 

回答

0

函数foo()期待为const char ** argv的却是char **。

您的代码可以用3种方式之一编写。

将foo()的定义更改为期望char **而不是const char **。在主

void foo(char **p) 

变化的argv()为const char **。

int main(int argc, const char **argv) 

角色的argv作为传递到foo时(常量字符**)()。

foo((const char **)argv); 
+0

这是我在一个网站上发现了一个问题,它说:发送普通指针需要常量指针不给任何警告的功能,所以我觉得有退出prolbem我不知道〜 – Nibnat