2010-08-12 19 views
0

Je possède ce code:Comment le prototype de cette fonction peut-il être compilable?

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

fonctionne très bien. Maintenant, je veux écrire PrintMainParameters comme prototype pour déclarer la fonction plus tard dans le fichier source.

J'ai essayé celui-ci, mais il dit incompatibilité de type, que le deuxième paramètre est un type de pointeur incompatible. Je comprends l'erreur du compilateur, mais je ne sais pas pourquoi cela se produit.

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

À quoi le prototype doit-il ressembler? Pourquoi mon code ne fonctionne pas?

Répondre

4

Vous pouvez utiliser:

void PrintMainParameters(int, char**); 

ou:

void PrintMainParameters(int, char *[]); 

Ou si vous préférez, vous pouvez insérer un paramètre fictif dans le prototype, tels que:

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

+1 pour la dernière option, ce qui améliore grandement la lisibilité pour quiconque regarde seulement le prototype. –

6

Votre fonction prend un tableau de pointeurs char. Votre prototype le déclare pour prendre un seul pointeur char à la place. Le bon prototype ressemble à ceci:

void PrintMainParameters(int, char*[]); 
+0

Merci, maintenant je comprends mon problème et son fixe;) – citronas