Error: expected ')' before '*' token en C
Résolu
Eronn
Messages postés
7
Statut
Membre
-
Eronn Messages postés 7 Statut Membre -
Eronn Messages postés 7 Statut Membre -
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
- Error 1962 ✓ - Forum PC fixe
- Bad request error 403 paiement ✓ - Forum Réseaux sociaux
- A javascript error occurred in the main process - Forum Matériel & Système
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
Statut
Membre
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 ?