2016-11-22 53 views
0

使用C ANSI语言,我试图将mainargv参数传递到将在stderr中打印msg的函数。将argv传入功能不起作用

下面是函数签名:

void erreur(Erreur_prog erreur_entree, const char **argv); 

下面是函数:

​​

我不断获取这种类型的错误:

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

我尝试玩弄指针,但...有些东西我没有得到。

任何人都可以指出我错过了什么?

+3

'expected'const char **'but argument is of'char **''这个消息不是很清楚吗? – kaylum

+0

对不起忘了把呼叫部分... – Cyberflow

+1

可能重复[为什么传递char * * * *为const char * * \ *会生成警告?](http://stackoverflow.com/questions/14562845/why -does-passing-char-as-const-char-generate-a-warning) – DIMMSum

回答

0

好吧,给它一个良好的回应,并让我的头清零,我重新安排了代码,它的工作原理。

下面是函数签名:

void erreur(Erreur_prog erreur_entree, const char * nomAppli); 

下面是函数:

void erreur(Erreur_prog erreur_entree, const char * nomAppli) 
{ 

    switch (erreur_entree) 
    { 
    case status_ok: 
     fprintf(stderr, "%s : Le status est ok.\n", nomAppli); 
     exit(0); 
     break; 
    case fichier_pgm_manquant: 
     fprintf(stderr, "%s : Le fichier PGM est manquant.\n", nomAppli); 
     exit(fichier_pgm_manquant); 
     break; 
    default: 
     fprintf(stderr, "%s : Erreur.\n", nomAppli); 
    } 

} 

这里是调用的例子:

erreur(arguments_invalide, argv[0]); 

没有更多的编译警告

我想他不喜欢,我曾经为const char ** argv的签名中的

这是一个指针的指针,我需要使用指针(为const char * monAppli)

希望这将帮助未来的其他人。