Erreur C
Résolu
sof_24
Messages postés
162
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonjour,
J'essais de compiler ce programme sous linux:
Le problème c'est que le terminal affiche l'erreur suivante, que j'ai pas pu comprendre et corriger, lors de la compilation:
sdl_test_2.c:18:7: error: expected identifier or `(' before `.' token
monev.user.code=1
^
Aidez moi s'il vous plaît..
J'essais de compiler ce programme sous linux:
#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
struct monev{
Uint8 type;
int code;
void *data1;
void *data2;
} ;
typedef struct monev monev;
SDL_Event event;
monev.user.code=1
int main(int argc, char *argv[])
{
SDL_Surface *ecran = NULL, *zozor = NULL, *zozor1=NULL;
SDL_Rect positionZozor, positionZozor1;
SDL_Event event;
int continuer = 1;
int tempsPrecedent = 0, tempsActuel = 0, tempsPrecedent1=0, tempsActuel1=0;
SDL_Init(SDL_INIT_VIDEO);
ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
SDL_WM_SetCaption("Gestion du temps en SDL", NULL);
zozor = SDL_LoadBMP("zozor.bmp");
zozor1=SDL_LoadBMP("zozor.bmp");
SDL_SetColorKey(zozor, SDL_SRCCOLORKEY, SDL_MapRGB(zozor->format, 0, 0, 255));
positionZozor.x = ecran->w / 2 - zozor->w / 2;
positionZozor.y = ecran->h / 2 - zozor->h / 2;
positionZozor1.x = ecran->w ;
positionZozor1.y = ecran->h / 2 - zozor1->h / 2;
SDL_EnableKeyRepeat(10, 10);
while (continuer)
{
SDL_PollEvent(&monev); /* On utilise PollEvent et non WaitEvent pour ne pas bloquer le programme */
switch(monev.type)
{
case SDL_USEREVENT:
continuer = 0;
break;
}
tempsActuel = SDL_GetTicks();
if (tempsActuel - tempsPrecedent > 30) /* Si 30 ms se sont écoulées depuis le dernier tour de boucle */
{
positionZozor.x++; /* On bouge Zozor */
tempsPrecedent = tempsActuel; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */
}
if (SDL_GetTicks()>3000)
{
tempsActuel1 = SDL_GetTicks()-3000;
if (tempsActuel1 - tempsPrecedent1 > 30) /* Si 30 ms se sont écoulées depuis le dernier tour de boucle */
{
positionZozor1.x=positionZozor1.x-1; /* On bouge Zozor */
tempsPrecedent1 = tempsActuel1; /* Le temps "actuel" devient le temps "precedent" pour nos futurs calculs */
}
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
SDL_BlitSurface(zozor1, NULL, ecran, &positionZozor1);
}
SDL_BlitSurface(zozor, NULL, ecran, &positionZozor);
SDL_Flip(ecran);
SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
}
SDL_FreeSurface(zozor);
SDL_FreeSurface(zozor1);
SDL_Quit();
return EXIT_SUCCESS;
}
Le problème c'est que le terminal affiche l'erreur suivante, que j'ai pas pu comprendre et corriger, lors de la compilation:
sdl_test_2.c:18:7: error: expected identifier or `(' before `.' token
monev.user.code=1
^
Aidez moi s'il vous plaît..
3 réponses
Vous avez raison, et je pense que j'ai pas effectué les instructions concernées dans le bon endroitn je dois les mettre dans le main.