Bonjour ou bonsoir, est ce que l'on peut m'aider à trouver d'où viens l'erreur, car je sais ce que veux dire cette erreur, mais je c'est pas ou est ce qu'elle est. Voici mon code (je précise au cas où que j'utilise juste les bibliothèques de la SDL 2, stdio.h et stdlib.h) :
C'est normal si c'est un peut n'importe quoi ce qu'il y a dans mon code, je suis pas en trin de crée un vrai programme, j'apprend juste actuellement à crée des points, des rectangles et à mettre des couleurs. Si le SDL_Color bleu{0,0,255,255}; n'a rien à faire la, n'y faite pas attention, c'est juste car je voulais voir si sa m'affichais des couleurs si je fessais comme sa, mais j'ai toujours pas pus voir si sa fonctionnais car sa me mais cette erreur(j'avais déjà supprimer cette fonction et sa me m'était toujours l'erreur donc le problème ne viens pas de là)
ok maintenant sa me mais plus cette erreur mais sa me mais maintenant une autre erreur : "error: a fonction-definition is not allowed here before '{' token".
Sinon j'avais bien oublier de mettre le %s dans mon fprintf ligne 32 (je pense que c'est de sa que tu parlais) et je pense que pour le if de la ligne 42 sais régler mais je suis pas sur :
Le else est toujours mal placé ! Il devrait être après un if, ou après un bloc if, mais pas à l’intérieur du bloc if ! Le if else, fait parti des bases du langage. !
Il manque beaucoup de point virgule !
Que viennent faire ces déclaration de fonction dans le corps de ta fonction test ? Elles ne vont pas être bien visible !
(La définition de ta variable bleu va passé en C++ mais pas en C. mais bon fin de fonction elle ne va pas servir. surtout si tu embrayes des return avant).
Le else est toujours mal placé ! Il devrait être après un if, ou après un bloc if, mais pas à l’intérieur du bloc if ! Le if else, fait parti des bases du langage. !
Il manque beaucoup de point virgule !
Que viennent faire ces déclaration de fonction dans le corps de ta fonction test ? Elles ne vont pas être bien visible !
(La définition de ta variable bleu va passé en C++ mais pas en C. mais bon fin de fonction elle ne va pas servir. surtout si tu embrayes des return avant).
- Edité par rouIoude il y a environ 7 heures
je pense que ce que tu veux dire sais que les fonctions comme "SDL_bool SDL_HasIntersection(const SDL_Rect* A, const SDL_Rect* B)" ne doivent pas être dans la fonction "SDL_bool test(SDL_Point point, SDL_Rect rect)". Mais aussi je savais pas trot ou les mettre ces fonctions car dans le cour que j'ai le type il ne me mettais pas ou il fallait mettre ces fonctions, il mettais juste les prototypes, et comme juste avant j'avais appris la fonction "SDL_bool", j'ai pensé qu'il fallait les mettre entre les '{' (je sais pas comment sa s'appelle). Et pour les points virgules je pense que vu qu'il mettait que les prototypes et que sur les prototypes, vu que ces des prototypes, il mettait pas de point virgule, j'ai du penser qu'il ne fallait pas mettre de point virgule.
edit : Et maintenant que j'y pense, j'avais pas fait d'informatique pendant pas mal de jour et quand hier j'avais ouvert mon code, les prototypes était dans des commentaires, donc je les avais enlever des commentaires car je pensais que c'était des fonctions, mais maintenant je me souviens de pourquoi c'était dans des commentaires, c'est car se n'est pas des fonctions mais des prototypes, c'est pour sa que mon code ne marchais pas, je m'en souviens maintenant. Faut vraiment que j'arrête de prendre de trop longue pause en informatique. XD
Bon merci pour votre aide en tous cas, même si enfaite les erreurs venais juste du fait que j'avais oublier que mes fonction était en faite des prototype.
re edit : Bon enfaite sa me mais toujours l'erreur : "error : a fonction-definition is not allowed here before '{' token" et aussi une autre erreur donc j'avais oublier de parler : "error : jump to label 'Quit' [-fpermissive]".
à oui désoler, j'ai confondu les deux, quand j'ai écris sa j'étais un peut fatiguer et ce qui a du me faire penser l'inverse c'est que le type sur le cour avait pas mis de point virgule, et pour le fait que je les avais mis dans une fonction c'étais car je pensais que c'étais des fonction, mais en tous cas le problème viens pas de la car j'ai remis les prototypes dans des commentaires mais sa me mais toujours cette erreur.
Par contre si on me dis que les fonctions aussi ont peut pas les mettre dans d'autre fonction, alors faut vraiment que je revois les bases.
est ce que l'on peut m'aider à trouver d'où viens l'erreur, car je sais ce que veux dire cette erreur, mais je c'est pas ou est ce qu'elle est.
C'est impossible : tous les compilateurs indiquent les lignes où se trouvent les erreurs. Donc tu ne vois pas cette information ? Trouve-la, c'est primordial !
Dans le forum aussi, il faut indiquer à quelle ligne se trouve l'erreur dont tu parles (quand tu auras trouvé où se trouve l'info).
MorgadPrudhon a écrit:
Par contre si on me dis que les fonctions aussi ont peut pas les mettre dans d'autre fonction, alors faut vraiment que je revois les bases.
Qu'appelles-tu « mettre » une fonction ?
En C, on ne peut pas déclarer ni définir une fonction à l'intérieur d'une autre fonction.
Par contre, on peut appeler une fonction à l'intérieur d'une autre fonction (et même à l'intérieur d'elle-même : c'est la récursivité).
Y'a pas grand chose qui a changer mais je le mets quand même.
Bon maintenant je vais aller revoir mon cour sur les fonctions car apparemment j'ai oublier pas mal de chose. Mais je parlais bien de faire appelle à une fonction à l'intérieur d'une autre fonction.
A ok c'est pour sa, désoler de pas avoir su résoudre le problème moi même, alors que pourtant maintenant que j'y pense c'est logique que le code marche pas vu que je crée une fonction dans une fonction, je ferais plus attention la prochaine fois. Merci de votre aide.
Par contre je sais pas pourquoi sa me fait sa mais sa me met une erreur "error : jump to label 'Quit' [-fpermissive]" je comprend pas trop se que cette erreur veux dire, sa me met l'erreur à la ligne 51 du code que j'ai mis dans le message d'avant, à l'endroit ou y'a le "Quit:", mais je vois pas pourquoi sa me mais cette erreur, pourtant j'ai bien mis deux point à la fin du "Quit" et non un point virgule comme je le fais des fois, et pour les "goto" je mets bien "goto Quit;".
edit : tu veux dire quoi par compiler en C++? pourtant j'utilise bien les fonctions du langage C.
> edit : tu veux dire quoi par compiler en C++? pourtant j'utilise bien les fonctions du langage C. Pourquoi les headers suivants? #include <exception> #include <string> #include <iostream
Le Tout est souvent plus grand que la somme de ses parties.
Enfaite je crois que le problème venais du fait que j'utilisais un fichier C++ au lieu d'un C, je pense que c'est sa que tu voulais dire rouloude.
Donc j'ai supprimer le fichier qui était en C++ et j'ai tous copier coller se qu'il y avait dedans dans un fichier C, par contre maintenant sa me met plusieurs erreurs : "multiple definition of 'SDL_main' " "first defined here" "multiple definition of 'test' " "first defined here (ou sa mis met deux fois) " et " error : ld returned 1 exit status" j'ai essayer en remétant les trois premiers "#include" que j'avais enlever comme apparemment elles sont juste pour le C++, et sa me mais juste cette erreur : " error : No such file or directory "
Ou bien tu as plusieurs copies (définitions) de ces fonctions, ou bien tu as plusieurs prototypes (déclarations) de ces fonctions. Tu ne dois avoir qu'une seule définition de chaque fonction. Et les déclarations ne doivent pas se contredire.
Le Tout est souvent plus grand que la somme de ses parties.
ok mais pourtant j'avais supprimer tous se qu'il y avais dans le dossier en C++ et j'avais même supprimer le dossier.
Mais de toute façon j'ai supprimer le projet et j'en ai crée un nouveau pour essayer de démarrer directement avec un fichier en C, mais sa ne ma pas l'air possible, mais je pense pas que le problème vienne du fait que le fichier sois en C++ car sur mes autres projet que j'avais fait avec SDL 2, c'était aussi des fichiers en C++ et pourtant la fonction "goto" fonctionnais.
Llà on ne sait plus ce que tu as fait ... De plus, je ne travaille pas avec un IDE (VS Code, etc.). Je ne peux pas t'aider sur ce point. Tu peux tout mettre dans un fichier *.c si tu veux compiler en C. Tu places d'abord les entêtes, puis les définitions de symboles et les structures que tu utilises partout, puis les fonctions dans le bon ordre, puis le main Pour ton label Quit, il faudrait ton code final pour savoir. Et 'goto' n'est pas une "fonction", c'est un énoncé comme for ou switch. Il faudrait éviter d'utiliser les goto quand on peut.
Le Tout est souvent plus grand que la somme de ses parties.
Et c'est se que j'avais fait, j'avais tous copier coller dans un fichier .c et j'ai supprimer le fichier .cpp (c'est comme sa que s'appelle les fichiers en C++ je crois), mais sa me m'était plein d'erreur bizarre.
Il semble que le compilateur n'aime pas qu'on sorte d'un bloc { } avec des pointeurs. Après tout, le goto peut nous envoyer n'importe où, y compris avant l'assignation d'une valeur à un pointeur. Tu pourrais essayer avec l'option -fpermissive sur la ligne d'appel au compilateur.
Le Tout est souvent plus grand que la somme de ses parties.
comme je l'ai déjà dis dans un autre message, ce code me donne cette erreur : "error : jump to label 'Quit' [-fpermissive]"
C'est parce que tu fais une déclaration de variable après le goto, donc si le goto est exécuté elle sera zappée et donc pas déclarée. (Et aussi parce que tu compile en C++).
(C'est en partie pour ça qu'on évite les goto).
Déplace la au début de la fonction main et tu verras ça compile.
PS : Tu peux aussi la supprimer, tu ne t'en sert pas ?!
comme je l'ai déjà dis dans un autre message, ce code me donne cette erreur : "error : jump to label 'Quit' [-fpermissive]"
C'est parce que tu fais une déclaration de variable après le goto, donc si le goto est exécuté elle sera zappée et donc pas déclarée. (Et aussi parce que tu compile en C++).
(C'est en partie pour ça qu'on évite les goto).
Déplace la au début de la fonction main et tu verras ça compile.
PS : Tu peux aussi la supprimer, tu ne t'en sert pas ?!
- Edité par rouIoude il y a environ 6 heures
Ok l'erreur venais bien du fait que il y avait des "goto" avant la création d'une variable, maintenant je vais enfin pouvoir essayer de crée des pixels de couleurs. Merci pour votre aide.
Par contre je sais pas comment on doit faire pour y compiler en C et pas en C++ car j'ai pas trouver de moyen de commencer un code avec SDL 2 avec un fichier en C et non en C++, et quand je copie colle tous se qu'il y a dans le fichier en C++ et que j'y mets dans un en C et que je supprime le fichier en C++, sa me mais plein d'erreur bizarre, mais pas grave, pour l'instant sa fonctionne avec un fichier en C++ donc je verrais sa quand sa causera vraiment un problème.
Par contre je sais pas comment on doit faire pour y compiler en C et pas en C++ car j'ai pas trouver de moyen de commencer un code avec SDL 2 avec un fichier en C et non en C++, et quand je copie colle tous se qu'il y a dans le fichier en C++ et que j'y mets dans un en C et que je supprime le fichier en C++, sa me mais plein d'erreur bizarre, mais pas grave, pour l'instant sa fonctionne avec un fichier en C++ donc je verrais sa quand sa causera vraiment un problème.
En C, il faut déjà enlever les includes du C++ (qui de plus ne sont pas utile pour ton code actuel). Ensuite, c'est peut-être les paramètres de ton projet qui ne sont pas correct.
>En C, il faut déjà enlever les includes du C++ (qui de plus ne sont pas utile pour ton code actuel). Ça fait combien de fois qu'on le mentionne?? Je vais déplaire à certains, mais je suis heureux de ne pas utiliser de IDE (pas de paramètre à gérer)
Le Tout est souvent plus grand que la somme de ses parties.
Je crois que pour certains IDE, lorsqu' ils voient une extension 'cpp' dans un nom de fichier, hé bien ils sélectionnent automatiquement g++.exe au lieu de gcc.exe (par exemple dans le cas de MinGW) même si le projet a été sélectionné comme étant un projet 'C'.
Moi j'utilise CodeBlocks et lors de la création du projet, quand je choisis le nom du projet, y'a quatre ligne, et sur la troisième sa m'affiche "nomDuProjet.cpp", et j'y ai remplacer par .c mais pourtant sa me crée quand même un projet en C++
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Et c'est se que j'avais fait, j'avais tous copier coller dans un fichier .c et j'ai supprimer le fichier .cpp (c'est comme sa que s'appelle les fichiers en C++ je crois), mais sa me m'était plein d'erreur bizarre.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.
Mon site web de jeux SDL2 entre autres : https://www.ant01.fr
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent