C 此函数的原型必须是可编译的吗?

C 此函数的原型必须是可编译的吗?,c,prototype,compiler-errors,C,Prototype,Compiler Errors,我有以下代码: void PrintMainParameters(int n, char* array[]) { int i = 0; for(i = 0; i < n; i++) { printf("%s \n", array[i]); } } int main(int argc, char* argv[] ) { PrintMainParameters(argc, argv); } void printmain参数(int n,char*数组[]) { i

我有以下代码:

void PrintMainParameters(int n, char* array[])
{
  int i = 0;
  for(i = 0; i < n; i++)
  {
   printf("%s \n", array[i]);
  }
}

int main(int argc, char* argv[] )
{
  PrintMainParameters(argc, argv);
}
void printmain参数(int n,char*数组[])
{
int i=0;
对于(i=0;i
很好。现在我想将PrintMainParameters编写为原型,以便稍后在源文件中声明函数

我试过这个,但它说类型不匹配,第二个参数是不兼容的指针类型。我理解编译器错误,但不知道为什么会发生

void PrintMainParameters(int, char*);


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

void PrintMainParameters(int n, char* array[])
{
  int i = 0;
  for(i = 0; i < n; i++)
  {
   printf("%s \n", array[i]);
  }
}
void printmain参数(int,char*);
int main(int argc,char*argv[])
{
PrintMain参数(argc、argv);
}
void printmain参数(int n,char*数组[])
{
int i=0;
对于(i=0;i

原型应该是什么样子?为什么我的代码不起作用?

您的函数接受一个字符指针数组。您的原型将其声明为使用单个字符指针。正确的原型如下所示:

void PrintMainParameters(int, char*[]);
您可以使用:

void PrintMainParameters(int, char**);
或:

或者,如果愿意,可以在原型中插入虚拟参数,例如:

void PrintMainParameters(int argc, char *argv[]);

谢谢,现在我明白我的问题了,它已经解决了;)+最后一个选项为1,这大大提高了仅查看原型的任何人的可读性。
void PrintMainParameters(int argc, char *argv[]);