Error: expected ')' before '*' token en C
Résolu
Eronn
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
Eronn Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Eronn Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voila mon problème :
J'obtiens l'erreur expected ')' before '*' token à la ligne 1 de mon fichier menu.c : "void menu(SDL_Surface* screen)". Pour ceux qui auraient le courage de jeter un oeil à mon 1er programme, voila mes fichiers sources et headers, tout conseil est le bienvenu :
main.c:
main.h :
menu.c :
menu.h :
jeu.c :
jeu.h :
Voila mon problème :
J'obtiens l'erreur expected ')' before '*' token à la ligne 1 de mon fichier menu.c : "void menu(SDL_Surface* screen)". Pour ceux qui auraient le courage de jeter un oeil à mon 1er programme, voila mes fichiers sources et headers, tout conseil est le bienvenu :
main.c:
#include <stdlib.h> #include <stdio.h> #include <SDL.h> #include <SDL_image.h> #include <SDL_ttf.h> #include "main.h" #include "menu.h" #include "jeu.h" int main(int argc, char* argv[]) { SDL_Surface *screen = NULL; SDL_Init(SDL_INIT_VIDEO); TTF_Init(); screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF); SDL_WM_SetCaption("Bob's Game", NULL); menu(screen); TTF_Quit(); SDL_Quit(); return EXIT_SUCCESS; } void initImage(SDL_Surface** image, const char chemin [], SDL_Rect* coord, int x, int y) { *image = IMG_Load(chemin); coord->x = x; coord->y = y; coord->w = (**image).w; coord->h = (**image).h; } int AABB(SDL_Event event, SDL_Rect coord) { if(event.motion.x >= coord.x && event.motion.x <= coord.x+coord.w && event.motion.y >= coord.y && event.motion.y <= coord.y+coord.h) return 1; else return 0; }
main.h :
#ifndef MAIN_H_DEF #define MAIN_H_DEF void initImage(SDL_Surface** image, const char chemin[], SDL_Rect* coord, int x, int y); int AABB(SDL_Event event, SDL_Rect coord); #endif
menu.c :
void menu(SDL_Surface* screen) { SDL_Surface *bJouerOff = NULL, *bJouerOn; SDL_Surface *bQuitterOff = NULL, *bQuitterOn; SDL_Surface *fond = NULL; SDL_Rect coordBJouer, coordBQuitter, coordFond; initImage(&bJouerOff, "IMG/Jouer Off.png", &coordBJouer, 200, 300); initImage(&bJouerOn, "IMG/Jouer On.png", &coordBJouer, 200, 300); initImage(&bQuitterOff, "IMG/Quitter Off.png", &coordBQuitter, 250, 450); initImage(&bQuitterOn, "IMG/Quitter On.png", &coordBQuitter, 250, 450); initImage(&fond, "IMG/Fond.png", &coordFond, 0, 0); int done = 0; SDL_Event event; while(!done) { SDL_WaitEvent(&event); if(event.key.type == SDL_Quit) done = 1; SDL_BlitSurface(fond, NULL, screen, &coordFond); if(AABB(event, coordBJouer)) { SDL_BlitSurface(bJouerOn, NULL, screen, &coordBJouer); if(event.button.type == SDL_MOUSEBUTTONDOWN && event.button.button == SDL_BUTTON_LEFT) jeu(screen); } else SDL_BlitSurface(bJouerOff, NULL, screen, &coordBJouer); if(AABB(event, coordBQuitter)) { SDL_BlitSurface(bQuitterOn, NULL, screen, &coordBQuitter); if(event.button.type == SDL_MOUSEBUTTONDOWN && event.button.button == SDL_BUTTON_LEFT) done = 1; } else SDL_BlitSurface(bQuitterOff, NULL, screen, &coordBQuitter); SDL_Flip(screen); } SDL_FreeSurface(bJouerOff); SDL_FreeSurface(bJouerOn); SDL_FreeSurface(bQuitterOff); SDL_FreeSurface(bQuitterOn); SDL_FreeSurface(fond); }
menu.h :
#ifndef MENU_H_DEF #define MENU_H_DEF void menu(SDL_Surface* screen); #endif
jeu.c :
void jeu(SDL_Surface* screen) { //Pas encore codée }
jeu.h :
#ifndef JEU_H_DEF #define JEU_H_DEF void jeu(SDL_Surface* screen); #endif
A voir également:
- Compilation error: expected ')' before ';' token
- Fan error lenovo - Forum Refroidissement
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Playback error reconnect in 3s (1/5) francais - Forum Box et Streaming vidéo
- Error: expected expression ✓ - Forum C
- Whea error occt - Forum Processeur
3 réponses
Bonjour
Ton compilateur ne sait pas ce que c'est que SDL_Surface car ça ne fait pas partie des types prédéfinis en C. C'est ça qui cause ton erreur.
Il faut lui définir en incluant un fichier . h avant, qui contient la définition du type SDL_Surface.
Je ne connais pas les bibliothèques SDL, mais il doit bien y avoir une doc (ou un exemple de programme) qui dit où se trouve cette définition.
Peut-être #include <SDL.h> tout simplement
Ton compilateur ne sait pas ce que c'est que SDL_Surface car ça ne fait pas partie des types prédéfinis en C. C'est ça qui cause ton erreur.
Il faut lui définir en incluant un fichier . h avant, qui contient la définition du type SDL_Surface.
Je ne connais pas les bibliothèques SDL, mais il doit bien y avoir une doc (ou un exemple de programme) qui dit où se trouve cette définition.
Peut-être #include <SDL.h> tout simplement
Eronn
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
SDL.h est déjà inclut et avant l'include de menu.c justement, dois-je l'inclure à nouveau et ou ? Merci de ton aide.
SDL.h est déjà inclut et avant l'include de menu.c
Il est inclus où ? La ligne 1 de menu.c, c'est bien void menu(SDL_Surface* screen) non ? Car c'est dans ce fichier qu'il y a une erreur, c'est dans ce fichier qu'il faut ajouter un include.
Si tu parles du fait qu'il y a #include "menu.h" après #include <SDL.h> dans main.c, c'est que tu n'as pas compris ce qu'est un #include et pourquoi il en faut. Quand tu compiles menu.c, ton compilateur ignore ce qu'il y a dans main.c et n'a aucune raison d'en tenir compte.
Il est inclus où ? La ligne 1 de menu.c, c'est bien void menu(SDL_Surface* screen) non ? Car c'est dans ce fichier qu'il y a une erreur, c'est dans ce fichier qu'il faut ajouter un include.
Si tu parles du fait qu'il y a #include "menu.h" après #include <SDL.h> dans main.c, c'est que tu n'as pas compris ce qu'est un #include et pourquoi il en faut. Quand tu compiles menu.c, ton compilateur ignore ce qu'il y a dans main.c et n'a aucune raison d'en tenir compte.
D'accord, désolé j'en suis qu'à mon 1er programme
J'ai rajouté les includes au début de menu.c :
Et ça marche, merci pour tout. Mais est-ce qu'elle sont toutes nécessaires ?
J'ai rajouté les includes au début de menu.c :
#include <stdlib.h> #include <stdio.h> #include <SDL.h> #include <SDL_image.h> #include <SDL_ttf.h> #include "main.h" #include "menu.h" #include "jeu.h"
Et ça marche, merci pour tout. Mais est-ce qu'elle sont toutes nécessaires ?