Salut je galere sur un programe tout con xD help codeblock
programeurDuDimanche
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
salut,je commence a programmer cetait ma premiere fois et j'ai une seule erreur sa m'énerve regardez :
d'apres le logitiel je me suis foiré a la ligne en gras! MErci
EDIT: Ajout de la coloration syntaxique.
d'apres le logitiel je me suis foiré a la ligne en gras! MErci
# <stdio.h> #include <stdlib.h> int main() ( <bold>int resultat = 0, nombre1 = 0, nombre2 = 0, nombre3 = 0;</bold> printf("tu a la chance de tester ma calculatrice ! \n\n"); printf("entre le nombre1\n\n"); scanf ("%d",&nombre1); printf("entre le nombre2 si tu l'ose !\n\n"); scnaf("%d",&nombre2); printif("et le dernier!\n\n"); scnaf("%d",&nombre3); resultat = nombre1 +nombre2 +nombre3; printf("%d + %d + %d = %d\n\n",nombre1 + nombre2 +nombre3 = resultat); return 0; )
EDIT: Ajout de la coloration syntaxique.
A voir également:
- Salut je galere sur un programe tout con xD help codeblock
- Codeblock - Télécharger - Langages
- Ça veut dire quoi xd ✓ - Forum Loisirs / Divertissements
- Programer un message sur iphone - Guide
- Que veut dire xd ✓ - Forum Matlab
- H xd - Télécharger - Gestion de fichiers
5 réponses
rE, Mince code block ma pas die toute les érreurs je remet ma compilation :
Merci d'avence.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int resultat = 0, nombre1 = 0, nombre2 = 0, nombre3 = 0;
printf("tu a la chance de tester ma calculatrice ! \n\n");
printf("entre le nombre1\n\n");
scanf ("%d", &nombre1);
printf("entre le nombre2 si tu l'ose !\n\n");
scnaf("%d", &nombre2);
printif("et le dernier!\n\n");
scnaf("%d",&nombre3);
resultat = nombre1 +nombre2 +nombre3;
printf ("%d + %d + %d = %d\n\n",nombre1, nombre2 ,nombre3 ,resultat);
return 0;
}
Merci d'avence.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int resultat = 0, nombre1 = 0, nombre2 = 0, nombre3 = 0;
printf("tu a la chance de tester ma calculatrice ! \n\n");
printf("entre le nombre1\n\n");
scanf ("%d", &nombre1);
printf("entre le nombre2 si tu l'ose !\n\n");
scnaf("%d", &nombre2);
printif("et le dernier!\n\n");
scnaf("%d",&nombre3);
resultat = nombre1 +nombre2 +nombre3;
printf ("%d + %d + %d = %d\n\n",nombre1, nombre2 ,nombre3 ,resultat);
return 0;
}
$ gcc -Wall progdudim.c
progdudim.c: In function `main':
progdudim.c:12:2: warning: implicit declaration of function `scnaf' [-Wimplicit-function-declaration]
progdudim.c:13:2: warning: implicit declaration of function `printif' [-Wimplicit-function-declaration]
/tmp/cc8zGRHv.o: In function `main':
progdudim.c:(.text+0x72): undefined reference to `scnaf'
progdudim.c:(.text+0x7e): undefined reference to `printif'
progdudim.c:(.text+0x92): undefined reference to `scnaf'
collect2: error: ld returned 1 exit status
Les messages d'erreur sont pourtant clairs
c'est scanf et non scnaf
c'est printf et non printif
Dal
je suis une Merde sinon merci!
Non, il faut juste apprendre à interpréter les messages d'avertissement et d'erreur provenant des différentes phases de la construction de l'exécutable, cela aide à la compréhension.
Là j'ai lancé le compilateur gcc en ligne de commande avec l'option -Wall qui affiche des "warnings". Sous Codeblocks, je suppose que tu utilises aussi gcc (si tu as installé la version de Codeblocks avec MinGW sous Windows).
Vérifie que ton projet est paramétré pour signaler tous les warnings (Project - Build options - Clique sur la racine du projet - onglet Compiler settings - Compiler flags - coche "Enable all compiler warnings [-Wall]".
En principe, les projets sont paramétrés par défaut par Codeblocks avec -Wall (qui signifie "Warnings: all").
Le compilateur peut donc afficher des erreurs ou des avertissements. L'erreur qui s'affichait en premier lorsque tu as posté ton message d'origine (celle concernant l'absence d'accolades) était une erreur de syntaxe.
Voyons la suite.
Le compilateur tente de compiler le programme progdudim.c :
Le compilateur rapporte des avertissements et non des erreurs à ce stade, car la déclaration implicite de fonctions est permise dans le standard C89. Le compilateur ne sais pas où la fonction "scnaf" est définie (ni "printif"), mais espère qu'il pourra savoir quoi en faire plus tard. Lorsque ces déclarations implicites sont faites le compilateur considère que la fonction retourne un int et que ses arguments peuvent être n'importe quels arguments.
A ce stade, la compilation de progdudim.c est terminée, mais l'exécutable n'est pas encore créé, seul le fichier objet (un .o) a été créé.
La création de l'exécutable suppose de lier les fichiers objets créés (entre eux s'il y a en plusieurs et) avec la bibliothèque standard et les bibliothèques externes éventuellement utilisées. Cela est fait par l'éditeur de liaison.
A ce stade, l'éditeur de liaison est incapable de trouver où sont effectivement définies les fonctions "scnaf" et "printif" et il retourne une erreur "undefined reference".
En ligne de commande, on voit d'ailleurs que l'erreur n'est pas renvoyée par gcc, mais par ld (le linker du projet GNU).
A partir du standard C99, la déclaration implicite de fonctions n'est plus admise, et est considérée comme une erreur.
gcc va compiler en C89 par défaut (en fait pas seulement, car gcc introduit aussi des extensions GNU au C), il faut préciser -std=c99 pour compiler en C99, mais pour réellement faire en sorte que ce type d'erreurs bloquent dès le stade de la compilation, il faut spécifier -Werror, ce qui va traiter tous les avertissements comme des erreurs.
De manière générale, il faut comprendre la raison de tous les warnings générés par ton code et les éliminer un par un (ou savoir très exactement ce que tu fais).
Dal
$ gcc -Wall progdudim.c
Là j'ai lancé le compilateur gcc en ligne de commande avec l'option -Wall qui affiche des "warnings". Sous Codeblocks, je suppose que tu utilises aussi gcc (si tu as installé la version de Codeblocks avec MinGW sous Windows).
Vérifie que ton projet est paramétré pour signaler tous les warnings (Project - Build options - Clique sur la racine du projet - onglet Compiler settings - Compiler flags - coche "Enable all compiler warnings [-Wall]".
En principe, les projets sont paramétrés par défaut par Codeblocks avec -Wall (qui signifie "Warnings: all").
Le compilateur peut donc afficher des erreurs ou des avertissements. L'erreur qui s'affichait en premier lorsque tu as posté ton message d'origine (celle concernant l'absence d'accolades) était une erreur de syntaxe.
Voyons la suite.
Le compilateur tente de compiler le programme progdudim.c :
progdudim.c: In function `main':
progdudim.c:12:2: warning: implicit declaration of function `scnaf' [-Wimplicit-function-declaration]
progdudim.c:13:2: warning: implicit declaration of function `printif' [-Wimplicit-function-declaration]
/tmp/cc8zGRHv.o: In function `main':
Le compilateur rapporte des avertissements et non des erreurs à ce stade, car la déclaration implicite de fonctions est permise dans le standard C89. Le compilateur ne sais pas où la fonction "scnaf" est définie (ni "printif"), mais espère qu'il pourra savoir quoi en faire plus tard. Lorsque ces déclarations implicites sont faites le compilateur considère que la fonction retourne un int et que ses arguments peuvent être n'importe quels arguments.
A ce stade, la compilation de progdudim.c est terminée, mais l'exécutable n'est pas encore créé, seul le fichier objet (un .o) a été créé.
La création de l'exécutable suppose de lier les fichiers objets créés (entre eux s'il y a en plusieurs et) avec la bibliothèque standard et les bibliothèques externes éventuellement utilisées. Cela est fait par l'éditeur de liaison.
A ce stade, l'éditeur de liaison est incapable de trouver où sont effectivement définies les fonctions "scnaf" et "printif" et il retourne une erreur "undefined reference".
progdudim.c:(.text+0x72): undefined reference to `scnaf'
progdudim.c:(.text+0x7e): undefined reference to `printif'
progdudim.c:(.text+0x92): undefined reference to `scnaf'
collect2: error: ld returned 1 exit status
En ligne de commande, on voit d'ailleurs que l'erreur n'est pas renvoyée par gcc, mais par ld (le linker du projet GNU).
A partir du standard C99, la déclaration implicite de fonctions n'est plus admise, et est considérée comme une erreur.
gcc va compiler en C89 par défaut (en fait pas seulement, car gcc introduit aussi des extensions GNU au C), il faut préciser -std=c99 pour compiler en C99, mais pour réellement faire en sorte que ce type d'erreurs bloquent dès le stade de la compilation, il faut spécifier -Werror, ce qui va traiter tous les avertissements comme des erreurs.
De manière générale, il faut comprendre la raison de tous les warnings générés par ton code et les éliminer un par un (ou savoir très exactement ce que tu fais).
Dal
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Plusieurs fautes :
# <stdio.h>
Il manque #include
Ce sont des accolades pour entourer le bloc d'une fonction, pas des parenthèses.
printf("%d + %d + %d = %d\n\n",nombre1 + nombre2 +nombre3 = resultat);
Il y a 3 %d, il faut donc 4 arguments. Donc
Cdlt,
Google is your friend
Plusieurs fautes :
# <stdio.h>
Il manque #include
Ce sont des accolades pour entourer le bloc d'une fonction, pas des parenthèses.
printf("%d + %d + %d = %d\n\n",nombre1 + nombre2 +nombre3 = resultat);
Il y a 3 %d, il faut donc 4 arguments. Donc
printf("%d + %d + %d = %d\n\n", nombre1, nombre2, nombre3, resultat);
Cdlt,
Google is your friend