Code Blocks error before int
Résolu
calvinblue
Messages postés
52
Statut
Membre
-
calvinblue Messages postés 52 Statut Membre -
calvinblue Messages postés 52 Statut Membre -
Bonjour,
je commence a programmer en C sur code::blocks
voici mon code , quand je clique sur débuggage, il met une erreur ( a la ligne ou c'est indiqué en commentaire)
je ne voi pa d'ou vien cette erreur .Merci beaucoup pour l'aide que vous pourriez m'apporter.
(note: les prototypes qui sont marqués ne sont pas fonctionnels étant donné que leur fichier napparait dans lezs directives de préprocesseur. je teste ce code pour vérifier sil marche indépendamment , sans les prototypes.)
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Bienvenue dans la calculette V2");
printf("\n\n");
printf("Tapez le chiffre de votre operation");
printf("\n\n");
printf("1==>Addition");
printf("\n\n");
printf("2==>Soustraction");
printf("\n\n");
printf("3==>Multiplication");
printf("\n\n");
printf("4==>Division");
printf("\n\n");
int demande1 = 0;// création de la variable pour le choix
scanf("%d", &demande1); // on défini la demande1 qui permettra de faire le choix du menu avec le switch suivant
switch (demande1)
{
case 1:
int Addition(int valeur1, valeur2, valeur3, valeur4, resultat, valeur9); //prototype (ici error before int)
case :2
int Sousteaction(int valeur5, valeur6, resultat2, valeur9);
case :3
int Multiplication(int valeur7, valeur8, resultat3, valeur9);
}
return 0;
}
je commence a programmer en C sur code::blocks
voici mon code , quand je clique sur débuggage, il met une erreur ( a la ligne ou c'est indiqué en commentaire)
je ne voi pa d'ou vien cette erreur .Merci beaucoup pour l'aide que vous pourriez m'apporter.
(note: les prototypes qui sont marqués ne sont pas fonctionnels étant donné que leur fichier napparait dans lezs directives de préprocesseur. je teste ce code pour vérifier sil marche indépendamment , sans les prototypes.)
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Bienvenue dans la calculette V2");
printf("\n\n");
printf("Tapez le chiffre de votre operation");
printf("\n\n");
printf("1==>Addition");
printf("\n\n");
printf("2==>Soustraction");
printf("\n\n");
printf("3==>Multiplication");
printf("\n\n");
printf("4==>Division");
printf("\n\n");
int demande1 = 0;// création de la variable pour le choix
scanf("%d", &demande1); // on défini la demande1 qui permettra de faire le choix du menu avec le switch suivant
switch (demande1)
{
case 1:
int Addition(int valeur1, valeur2, valeur3, valeur4, resultat, valeur9); //prototype (ici error before int)
case :2
int Sousteaction(int valeur5, valeur6, resultat2, valeur9);
case :3
int Multiplication(int valeur7, valeur8, resultat3, valeur9);
}
return 0;
}
A voir également:
- Code Blocks error before int
- Code blocks - Télécharger - Langages
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
3 réponses
hum... je ne comprends pas trop ce que tu veux faire avec ton switch.
Tu mets dedans des définitions de fonctions, mais des fonctions ne peuvent pas être définies dans main(). On ne peut pas définir une fonction dans une autre fonction (et main n'est qu'une fonction spéciale).
Les définitions doivent se faire après ou avant le bloc main().
Si tu les mets après (ce qui est conseillé pour la clarté de ton fichier), il faut tout de même mettre des prototypes avant main() car sinon le compilo ne sait pas ce qu'il se passe.
En fait l'erreur que te donne le compilo est que avant le "int " qui comment la déclaration de fonction, tu te trouves dans un bloc {, ce qui est impossible.
ce que tu peux mettre dans ton bloc switch ce sont des appels à la fonction.
Tu mets dedans des définitions de fonctions, mais des fonctions ne peuvent pas être définies dans main(). On ne peut pas définir une fonction dans une autre fonction (et main n'est qu'une fonction spéciale).
Les définitions doivent se faire après ou avant le bloc main().
Si tu les mets après (ce qui est conseillé pour la clarté de ton fichier), il faut tout de même mettre des prototypes avant main() car sinon le compilo ne sait pas ce qu'il se passe.
En fait l'erreur que te donne le compilo est que avant le "int " qui comment la déclaration de fonction, tu te trouves dans un bloc {, ce qui est impossible.
ce que tu peux mettre dans ton bloc switch ce sont des appels à la fonction.
Waw merci pour cette réponse détaillée et rapide!
D'apres ce que jeai compris, on donne juste apres les directives de préprocesseur, les prototypes
et apres on fait appel à la fonction n'importe ou dans le main . et si on inclu le .h dans lequel est situé cette fonction , ça marchera tout seul? (je veu dire il la trouvera?).
En suirte j'aimeai que tu me fasse un exemple d'un prototype et de lappel de fonction qui lui correspond stp
Merci Beaucoup!
D'apres ce que jeai compris, on donne juste apres les directives de préprocesseur, les prototypes
et apres on fait appel à la fonction n'importe ou dans le main . et si on inclu le .h dans lequel est situé cette fonction , ça marchera tout seul? (je veu dire il la trouvera?).
En suirte j'aimeai que tu me fasse un exemple d'un prototype et de lappel de fonction qui lui correspond stp
Merci Beaucoup!
oui. l'important est qu'avant main() le compilateur connaisse la syntaxe d'appel des fonctions que tu utilises dedans. Tu as donc plusieurs possibilités :
/////////////
// *définitions des fonctions "accessoires"
// *définition de la fonction main()
//////////
ou
/////////////
// *prototypes des fonctions "accessoires"
// *définition de la fonction main()
// *définitions des fonctions accessoires
//////////
ou
/////////////
// * inclusion d'un fichier externe qui fait ce que j'ai dit plus haut
// habituellement c'est un fichier de prototypes uniquement qu'on
// appelle un .h (h comme header : en-tête)
// il faut bien sûr que dans ce fichier .h tu fasses un include du .C ou .CPP
// afin de définir les fonctions correspondantes
// * définition de la fonction main()
//////////
Les exemples concret je suis sûr que tu arriveras à les faire toi ;).
Pour les projets à partir d'une certaine taille, on sépare donc le programme en plusieurs fichiers et aussi on sépare les fichiers de prototypes .h des fichiers d'implémentation des fonctions .cpp .
Il y a plusieurs raisons à cela.
1) deux fonctions peuvent s'appeler l'un l'autre. Il est donc obligatoire dans certains cas d'avoir des prototypes avant, sinon le compilateur ne comprend rien.
2) Je trouve que la raison majeure est pour la clarté du programme.
Ex : tu as programme tes fonctions additionner, soustraire, etc... correctement. Maintenant tu codes ton main(). Et là tu te dis "zut, dans quel ordre j'ai mis les argument ? Quel type me renvoie la fonction exactement ? Alors tu n'as qu'à aller voir le fichier .h, tu trouves rapidement le prototype ta fonction, et hop là c'est bon. Sinon tu dois rechercher dans le cpp qui est bien sûr beaucoup plus gros habituellement.
Tu n'as pas besoin de savoir exactement comment est écrite ta fonction pour l'appeler, tu veux juste savoir quels sont les arguments à mettre.
D'ailleurs une bonne pratique est de bien commenter ton fichier .h afin de décrire l'effet des différents arguments.
/////////////
// *définitions des fonctions "accessoires"
// *définition de la fonction main()
//////////
ou
/////////////
// *prototypes des fonctions "accessoires"
// *définition de la fonction main()
// *définitions des fonctions accessoires
//////////
ou
/////////////
// * inclusion d'un fichier externe qui fait ce que j'ai dit plus haut
// habituellement c'est un fichier de prototypes uniquement qu'on
// appelle un .h (h comme header : en-tête)
// il faut bien sûr que dans ce fichier .h tu fasses un include du .C ou .CPP
// afin de définir les fonctions correspondantes
// * définition de la fonction main()
//////////
Les exemples concret je suis sûr que tu arriveras à les faire toi ;).
Pour les projets à partir d'une certaine taille, on sépare donc le programme en plusieurs fichiers et aussi on sépare les fichiers de prototypes .h des fichiers d'implémentation des fonctions .cpp .
Il y a plusieurs raisons à cela.
1) deux fonctions peuvent s'appeler l'un l'autre. Il est donc obligatoire dans certains cas d'avoir des prototypes avant, sinon le compilateur ne comprend rien.
2) Je trouve que la raison majeure est pour la clarté du programme.
Ex : tu as programme tes fonctions additionner, soustraire, etc... correctement. Maintenant tu codes ton main(). Et là tu te dis "zut, dans quel ordre j'ai mis les argument ? Quel type me renvoie la fonction exactement ? Alors tu n'as qu'à aller voir le fichier .h, tu trouves rapidement le prototype ta fonction, et hop là c'est bon. Sinon tu dois rechercher dans le cpp qui est bien sûr beaucoup plus gros habituellement.
Tu n'as pas besoin de savoir exactement comment est écrite ta fonction pour l'appeler, tu veux juste savoir quels sont les arguments à mettre.
D'ailleurs une bonne pratique est de bien commenter ton fichier .h afin de décrire l'effet des différents arguments.
Remarque aussi que dans un prototype ou une définition de fonction il faut mettre le type pour tous les arguments, pas seulement le premier comme quand tu définis des variables.
Et en plus dans les prototypes tu peux te passer du nom des variables. (Mais pas du type!)
Ex :
//définition correcte
int mafonction(int a, int b) {
//...
}
//prototypes corrects
int mafonction(int a, int b);
int mafonction(int, int);
//définition incorrecte
int mafonction(int a, b) {
//...
}