2013-12-16 39 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