Error: expected expression before ‘int’
1999-pythagore
-
[Dal] Messages postés 6373 Statut Contributeur -
[Dal] Messages postés 6373 Statut Contributeur -
bonjour, j'essayes de creéer unprogramme en language C. Mais le compilateur me renvoie l'instruction suivante:(myage est une fonction écrite précédemment)
main.c: In function ‘main’:
main.c:4:12: error: expected expression before ‘int’
myage( int i);
Voicile programme:
Voici la fonction myage:
main.c: In function ‘main’:
main.c:4:12: error: expected expression before ‘int’
myage( int i);
Voicile programme:
#include "fonctions.h"
int main(void){
myage(int i);
return 0;
}
Voici la fonction myage:
#include "fonctions.h"
int myage(int i){
printf("I am %d \n",i);
return 0;
}
3 réponses
Bonjour,
Merci pour cette information. As-tu une question ?
Pour rappel :
Merci pour cette information. As-tu une question ?
Pour rappel :
Les réponses sont données par des bénévoles, pas par des machines. Il est vivement recommandé d'user des formes minimales de la politesse ("bonjour', "s'il vous plait", "merci d'avance") pour rester dans le cadre de notre charte d'utilisation.
Bonjour 1999-pythagore,
Lorsque tu définis une fonction, tu indiques son prototype c'est à dire le type de données qu'elle retourne, son nom et les types des paramètres qu'elle accepte. C'est ce que tu as fait en écrivant la définition de ta fonction
Lorsque veux exécuter une fonction définie, tu vas le faire en utilisant éventuellement les données qu'elle retourne, en l'appelant avec son nom, et avec des données passées en paramètre qui sont du type que tu as défini.
Pour appeler la fonction myage, tu dois donc lui passer en paramètre une expression qui soit évaluée par le programme comme un int, par exemple une expression littérale :
Dal
Lorsque tu définis une fonction, tu indiques son prototype c'est à dire le type de données qu'elle retourne, son nom et les types des paramètres qu'elle accepte. C'est ce que tu as fait en écrivant la définition de ta fonction
int myage(int i).
Lorsque veux exécuter une fonction définie, tu vas le faire en utilisant éventuellement les données qu'elle retourne, en l'appelant avec son nom, et avec des données passées en paramètre qui sont du type que tu as défini.
Pour appeler la fonction myage, tu dois donc lui passer en paramètre une expression qui soit évaluée par le programme comme un int, par exemple une expression littérale :
myage(12);, ce qui donnera l'affichage
"I am 12".
Dal
a oui j'aivais mis int i en argument et donc le compilateur ne le considère pas "comme 12"v d'où l'intérêt d'inclure int i =4 plus haut.
Merci à vous
Merci à vous
int iest une déclaration de type et non pas une expression dont le compilateur peut évaluer la valeur à un
intet si tu écris cela dans les paramètres d'appel à la fonction tu as une erreur car le compilateur ne sait pas quoi en faire.
Par contre, comme tu le dis, si tu déclares et initialise une variable avec un type compatible avec celui du paramètre de ta fonction
int i = 4;avant l'appel à la fonction que tu peux d'ailleurs nommer différemment, comme
int age = 4;si tu veux, tu peux alors faire un appel à ta fonction comme ceci :
myage(age);, et le compilateur comprendra que tu veux passer à ta fonction le contenu de la variable au moment de cet appel.