2016-11-22 52 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)

希望這將幫助未來的其他人。