Error: expected expression before ‘int’

-
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:

#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;
}
Afficher la suite 

3 réponses

Commenter la réponse de Chris 94
Messages postés
5283
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 novembre 2019
818
0
Merci
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
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
Commenter la réponse de [Dal]
0
Merci
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
[Dal]
Messages postés
5283
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
14 novembre 2019
818 -
int i
est une déclaration de type et non pas une expression dont le compilateur peut évaluer la valeur à un
int
et 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.
Commenter la réponse de 1999-pythagore