Error: expected ')' before '*' token en C

Résolu/Fermé
Eronn Messages postés 7 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 17 février 2012 - 17 févr. 2012 à 10:19
Eronn Messages postés 7 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 17 février 2012 - 17 févr. 2012 à 14:19
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:

#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

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
0
Eronn Messages postés 7 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 17 février 2012
17 févr. 2012 à 12:15
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.
0