Erreur C

Résolu
Bonjour,
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

  1. Lu'

    Je connais rien aux SDL mais il manque pas un point virgule derrière
    monev.user.code=1
    ??
    1. 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.
      1. En effet, le placement de certaines lignes me parait bizarre.
    2. Contributeur
      Bonjour,

      L'indentation n'est pas terrible...
      Du coup, j'ai pas tout lu le code.

      monev.user.code=1
      Il manque un ;
      Sans être obligatoire, il vaut mieux le mettre dans le main.
      De plus, il faut déclarer la variable.
      Et enfin, user n'est pas un membre de la structure.

      Cdlt,