IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

structure imbrique 'aide'


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Par défaut structure imbrique 'aide'
    bonjours
    j'ai cree des structure imbrique dans un fichier header que j'ai inclus dans ma fonction main et j'ai manipuler ces structures avec certins fonctions que j'ai crée mais pendant la phase de compilation il me retourne des message d'ereurs
    voici ma fonction main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    int main(int argc,char *argv[])
    {   objet princ,fond,res,co,bo,io,ife;
            static SDL_Event event;
    		dipole dipole;
    		fond.pos.x=0;
    		fond.pos.y=0;
    		dipole.res=res;
    		dipole.bo=bo;
    		dipole.co=co;
    		dipole.io=io;
    		dipole.ife=ife;
    		SDL_Init(SDL_INIT_VIDEO);
    		princ.img=SDL_SetVideoMode(960,510,32,NULL);
    		SDL_WM_SetCaption("FILTRE",NULL);
    		fond.img=SDL_LoadBMP("d:/fil/fond.bmp");
    		res.img=SDL_LoadBMP("d:/fil/res.bmp");
    		bo.img=SDL_LoadBMP("d:/fil/bob.bmp");
    		co.img=SDL_LoadBMP("d:/fil/cond.bmp");
    		io.img=SDL_LoadBMP("d:/fil/ouvert.bmp");
    		ife.img=SDL_LoadBMP("d:/fil/ferme.bmp");
    		SDL_BlitSurface(fond.img,NULL,princ.img,&fond.pos);
    		SDL_Flip(princ.img);
    		SDL_SaveBMP(princ.img,"d:/fil/fond_temp.bmp");
    		do
    		{
    			pause(event,princ,fond,dipole);
    			SDL_WaitEvent(&event);
    		}	
    		while(event.type!=SDL_QUIT);
    		SDL_QUIT;
    		return EXIT_SUCCESS;
    et mon fichier header
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    #include<stdio.h>
    #include<SDL.h>
    typedef struct objet objet;
    typedef struct dipole dipole;
    struct objet
    {SDL_Surface *img;
    SDL_Rect pos;};
    struct dipole
    {objet res,bo,co,io,ife;};
     
    void pause(SDL_Event ,objet princ,objet fond,dipole dipole);
    void deplacer(objet fond,objet dip,objet princ,SDL_Event event );
    void deplacer(objet fond,objet dip,objet princ,SDL_Event event)
    {
    	do{
    		SDL_BlitSurface(fond.img,NULL,princ.img,&fond.pos);
    		dip.pos.x=event.motion.x;
    				dip.pos.y=event.motion.y;
    				SDL_BlitSurface(dip.img,NULL,princ.img,&dip.pos);
    				SDL_Flip(princ.img);
    				SDL_FreeSurface(princ.img);
    				SDL_WaitEvent(&event);
    			}
    				while(event.type!=SDL_MOUSEBUTTONUP || event.button.x<200 || event.button.x>280 || event.button.y<60 || event.button.y>100);
    				SDL_BlitSurface(dip.img,NULL,princ.img,&dip.pos);
    				SDL_BlitSurface(fond.img,NULL,princ.img,&dip.pos);
    				dip.pos.x=198;
    				dip.pos.y=59;
    				SDL_BlitSurface(dip.img,NULL,princ.img,&dip.pos);
    				SDL_Flip(princ.img);
    				SDL_SaveBMP(princ.img,"d:/fil/fond_temp.bmp");
     
    		}
    void pause(SDL_Event event,objet princ,objet fond,dipole dipole)
    {
    	switch (event.type)
    	{
    	case SDL_MOUSEBUTTONUP:
    		if(event.button.x>670 && event.button.x<700)
    		{ if(event.button.y>60 && event.button.y<80)
    			deplacer(fond,dipole.res,princ,event);
              if(event.button.y>80 && event.button.y<100)
    			deplacer(fond,dipole.bo,princ,event);
    		  if(event.button.y>100 && event.button.y<120)
    			deplacer(fond,dipole.co,princ,event);
    		  if(event.button.y>120 && event.button.y<140)
    			deplacer(fond,dipole.io,princ,event);
    		  if(event.button.y>140 && event.button.y<160)
    			deplacer(fond,dipole.ife,princ,event);
    	}
    	}
    merci pour votre aide

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 838
    Billets dans le blog
    1
    Par défaut
    Mouais, sans avoir les messages d'erreur c'est pas facile de voir le problème principal.

    Toutefois, voici les problèmes annexes que j'ai relevés
    1) tu devrais nommer tes structures "s_qqchose" et tes types "t_qqchose" . Ca éviterait ensuite de les confondre avec des variables et faire des aller-retour incessants entre header et code pour vérifier si on lit un type ou une variable

    2) mettre un code complet dans un header c'est pas sain. Généralement on met le code à part, on le compile, on stocke le compilé dans une librairie qu'on joint au projet

    3) tes fonctions ne reçoivent qu'une copie de tes éléments. Généralement ça suffit sauf dans le cas où
    a) la fonction doit modifier l'élément reçu
    b) l'élément est une structure => vaut mieux alors ne recopier que l'adresse de la structure que la structure entière
    Or, il me semble que tes fonctions entrent dans ces 2 cas là (et seul l'un des deux suffit)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Par défaut
    merci cordialement

  4. #4
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 10
    Par défaut
    voici le message d'ereur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(5): error C2143: erreur de syntaxe*: absence de ';' avant 'type'
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(7): error C2143: erreur de syntaxe*: absence de ';' avant 'type'
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(8): error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'dip'
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(8): error C2065: 'dip'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(17): warning C4047: 'fonction'*: les niveaux d'indirection de 'Uint32' et de 'void *' sont différents
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(17): warning C4024: 'SDL_SetVideoMode'*: types différents pour le paramètre formel et réel 4
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(20): error C2065: 'res'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(20): error C2224: la partie gauche de '.img' doit avoir un type struct/union
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(21): error C2065: 'bo'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(21): error C2224: la partie gauche de '.img' doit avoir un type struct/union
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(22): error C2065: 'co'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(22): error C2224: la partie gauche de '.img' doit avoir un type struct/union
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(23): error C2065: 'io'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(23): error C2224: la partie gauche de '.img' doit avoir un type struct/union
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(24): error C2065: 'ife'*: identificateur non déclaré
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(24): error C2224: la partie gauche de '.img' doit avoir un type struct/union
    1>c:\users\matrix\desktop\projet\filtres\filtres\main.cpp(35): warning C4098: 'pause'*: fonction 'void' retournant une valeur

Discussions similaires

  1. Lecture de structures imbriquées
    Par StitchP dans le forum MATLAB
    Réponses: 5
    Dernier message: 11/04/2007, 21h05
  2. Réponses: 2
    Dernier message: 21/03/2007, 10h55
  3. structure imbriquée malloc problème
    Par tuxout dans le forum C
    Réponses: 3
    Dernier message: 26/02/2007, 06h49
  4. Malloc / structures imbriquées
    Par Lolita59 dans le forum C
    Réponses: 14
    Dernier message: 11/05/2006, 15h43
  5. Réponses: 3
    Dernier message: 20/11/2005, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo