2017-09-15 5 views
-4

[entrez la description de l'image ici] [1] J'ai une fonction void readline() qui sort une chaîne, et je veux la passer dans une autre fonction en tant que paramètre, comment puis-je faire cela,Comment passer une fonction void (void) dans une autre fonction comme paramètre dans c

Merci pour toute aide.

int scorecount(argc1, argv1, void readline()); 
void readline(); 


int main(int argc, char *argv[]){ 
    scorecount(argc,argv); 
} 


int scorecount(argc1, argv1, void readline()){ 

    output a int 
    and I want to use the string from readline function somewhere in 
    scorecount 

} 


void readline(){ 

    output a string 

} 
+1

Vous devez montrer plus de code , votre question n'est pas claire telle qu'elle se présente ici. Ou vous pourriez avoir besoin de lire votre livre de texte C. –

+1

vous dites que readline donnera u chaîne de sortie et que vous voulez passer dans une autre fonction le type de retour de cette fonction readline devrait être "chaîne" –

+0

Peut-être que vous voulez [GNU readline] (http: //cnswww.cns.cwru. edu/php/chet/readline/rltop.html) mais il ne retourne pas un 'void' –

Répondre

4

Vous pouvez déclarer le paramètre en tant que déclaration de fonction en utilisant n'importe quel nom du paramètre. Par exemple

void another_function(void readline(void)); 

Et la fonction another_function peut être appelé comme

another_function(readline); 

Le compilateur ajuste la déclaration de fonction pointeur vers la fonction. Ainsi, la déclaration ci-dessus est équivalente à

void another_function(void (*readline)(void)); 

EDIT: Après avoir mis à jour votre code, puis la fonction doit être déclarée comme

int scorecount(int argc, char * argv[], void readline(void)); 
void readline(void); 

et appelé comme

scorecount(argc, argv, readline); 
+0

Je suis très nouveau sur Stack overflow, comment puis-je mettre mon code ici pour que vous puissiez le voir? –

+0

@HuYunfei Ma réponse n'est pas claire ou avez-vous encore un problème? –

+0

Je veux passer funcline read dans une fonction qui a déjà passé argc et argv dans le paramètre, et j'ai appliqué votre solution, l'erreur apparaît –