Используя язык C ANSI, я пытаюсь передать параметр main
в функцию, которая будет печатать msg
в stderr
.Передача argv в функцию не работает
Вот функция подписи:
void erreur(Erreur_prog erreur_entree, const char **argv);
Вот функция:
void erreur(Erreur_prog erreur_entree, const char **argv)
{
switch (erreur_entree)
{
case status_ok:
fprintf(stderr, "%s : Le status est ok.\n", argv[0]);
exit(0);
break;
case fichier_pgm_manquant:
fprintf(stderr, "%s : Le fichier PGM est manquant.\n", argv[0]);
exit(fichier_pgm_manquant);
break;
default:
fprintf(stderr, "%s : Erreur.\n", argv[0]);
}
}
Я продолжаю получать этот тип ошибки:
tp2.c:139:33: attention : passing argument 2 of ‘erreur’ from incompatible pointer type
erreur(arguments_invalide, argv);
^
tp2.c:55:6: note: expected ‘const char **’ but argument is of type ‘char **’
void erreur(Erreur_prog erreur_entree, const char **argv);
Вот пример из телефон:
erreur(arguments_invalide, argv);
Я пробовал играть с указателями, но ... есть что-то, чего я не получаю.
Любой может указать мне, что я упускаю?
'expected 'const char **', но аргумент имеет тип 'char **'' Это сообщение не очень понятно? – kaylum
Извините, забыл поставить вызывающую часть ... – Cyberflow
Возможный дубликат [Почему передача char \ * \ * as const char \ * \ * генерирует предупреждение?] (Http://stackoverflow.com/questions/14562845/why -does-pass-char-as-const-char-generate-a-warning) – DIMMSum