如何解释关于参数传递给函数的警告

时间:2013-12-16 03:17:00

标签: compiler-warnings

为什么程序会对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]

1 个答案:

答案 0 :(得分:0)

函数foo()期望const char **但是argv是char **。

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

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

void foo(char **p)

将main()中的argv更改为const char **。

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

传递给foo()时将argv转换为(const char **)。

foo((const char **)argv);