2009-11-22 4 views
1

J'ai le code C suivant dans un programme:C Fonction Ignoré à exécution

printf("Test before print_foo()"); 
void print_foo(char board[ROW][COL]); 
printf("Test after print_foo()"); 

où est print_foo printf le passé dans le tableau de caractères 2-D avec .c approprié et les fichiers .h importés.

La sortie de la console correspond uniquement aux deux instructions printf. Débogage, l'exécution ne passe même jamais dans print_foo.

Des idées?

+0

Oups. Merci les gars pour les réponses rapides. – Brian

Répondre

1
void print_foo(char board[ROW][COL]); 

n'est pas un appel de fonction. C'est une déclaration.

Vous voulez probablement

print_foo(board); 
+1

omble chevalier doit aller trop – JohnIdol

+0

:) La ligne « vous voulez probablement » est probablement incorrect. Voir la réponse d'Alex Martelli pour un peu plus de contexte et une réponse plus probable. –

+0

Oups. Char est allé aussi. –

2

qui ressemble à une déclaration de fonction pour moi - c'est pourquoi votre foo-nction n'est pas appelé.

2

Votre ligne du milieu est juste une déclaration de fonction, pas un appel de fonction.

3

Ce préfixe void fait de la ligne médiane une déclaration de la fonction print_foo (et char entre les parenthèses signifie que ce serait une syntaxe invalide dans le cas contraire). Pour tout appel print_foo, changer la ligne médiane à print_foo(board); (si board comment vous avez nommé ce tableau de caractères 2-D).

2

Si vous n'avez pas fait le prototype précédemment alors vous devez écrire ceci:

printf("Test before print_foo()"); 
void print_foo(char board[ROW][COL]); 
print_foo(board); 
printf("Test after print_foo()"); 

En bref, vous devez définir/déclarer print_foo avant d'appeler, ou votre compilateur signaler une erreur !!