【发布时间】:2016-11-22 05:36:06
【问题描述】:
使用 C ANSI 语言,我试图将main 的argv 参数传递到一个函数中,该函数将在stderr 中打印msg。
这是函数签名:
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 **’ but argument is of type ‘char **’这条信息不是很清楚吗? -
抱歉忘记放调用部分...
-
提示:查看 main 的函数签名。
argv是const char **吗? -
我正在写一个答案,但我突然想到指针到指针的 C 限定符系统非常愚蠢,在实践中毫无用处。不惜一切代价避免的事情:指针到指针,指针到指针的限定类型。指向限定指针的指针。想出这个系统和它的语法的人不是一个理智的人。