Как должен выглядеть прототип этой функции, чтобы быть компилируемым? - PullRequest
0 голосов
/ 12 августа 2010

У меня есть этот код:

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);
}

Работает нормально. Теперь я хочу написать 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]);
  }
}

Как должен выглядеть прототип? Почему мой код не работает?

Ответы [ 2 ]

6 голосов
/ 12 августа 2010

Ваша функция принимает массив указателей на символы.Ваш прототип объявляет, что вместо этого он использует один указатель на символ.Правильный прототип выглядит так:

void PrintMainParameters(int, char*[]);
4 голосов
/ 12 августа 2010

Вы можете использовать:

void PrintMainParameters(int, char**);

или:

void PrintMainParameters(int, char *[]);

Или, если хотите, вы можете вставить фиктивный параметр в прототип, например:

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