Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problemed'envoi et de reception à une fonction

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problemed'envoi et de reception à une fonction

n°1783430
jaco3th
Posté le 06-09-2008 à 17:11:13  profilanswer
 

Bonjour, j'ai essayé de créer une structure afin que mon timer l'envoie à une fonction, mais je n'ai pas réussi.
Pouvez-vous me dire ce qui ne vas pas svp?
Dans ma fonction principale, j'ai voila comment j'ai déclaré ma structure (ces sous-variables existent deja):
 
struct PourChienr
{
SDL_Rect positionChienr[16];
long variable;
};
 
Ensuite, (premiere erreur*) voila mon timer:
 
while(positionChienr[15].x != 350)
{
timer = SDL_AddTimer(1000, animChienr, &PourChienr);
}
 
*C:\Users\xavier\heenok\main.c|318|error: expected primary-expression before ')' token|
 
 
Et enfin ma fonction(2eme erreur*):
 
Uint32 animChienr(Uint32 intervalle, void *parametre)
{
SDL_Rect* positionChienr = (SDL_Rect*)parametre;
/* Conversion de void* en SDL_Rect* */
 
 
 
positionChienr[variable].x = 100;
positionChienr[variable].y = 100;
 
variable ++;
 
positionChienr[variable].x = 200 + variable * 10;
positionChienr[variable].y = 400;
 
 
 
return intervalle;
 
 
}
 
 
* C:\Users\xavier\heenok\main.c|1184|error: `variable' was not declared in this scope|
 
 
ps: desolé pour les balises, je n'ai pas trouvé

mood
Publicité
Posté le 06-09-2008 à 17:11:13  profilanswer
 

n°1783466
Sve@r
Posté le 06-09-2008 à 20:25:18  profilanswer
 

jaco3th a écrit :

Bonjour, j'ai essayé de créer une structure afin que mon timer l'envoie à une fonction, mais je n'ai pas réussi.
Pouvez-vous me dire ce qui ne vas pas svp?
Dans ma fonction principale, j'ai voila comment j'ai déclaré ma structure (ces sous-variables existent deja):
 
struct PourChienr
{
SDL_Rect positionChienr[16];
long variable;
};
 
Ensuite, (premiere erreur*) voila mon timer:
 
while(positionChienr[15].x != 350)
{
timer = SDL_AddTimer(1000, animChienr, &PourChienr);
}


Non. Ta variable ne se nomme pas "PourChienr". Ce token identifie ton nom de structure.
 
Te faut:
1) déclarer une variable de type "struct PourChienr"
2) passer cette variable via son adresse à ta fonction
 
Si t'avais pris la peine d'identifier ton nom de structure par "s_xxx" comme c'est assez couramment conseillé, t'aurais pas fait l'erreur !!!
 

jaco3th a écrit :

Et enfin ma fonction(2eme erreur*):
 
Uint32 animChienr(Uint32 intervalle, void *parametre)
{
SDL_Rect* positionChienr = (SDL_Rect*)parametre;
/* Conversion de void* en SDL_Rect* */
 
 
 
positionChienr[variable].x = 100;
positionChienr[variable].y = 100;
 
variable ++;
 
positionChienr[variable].x = 200 + variable * 10;
positionChienr[variable].y = 400;
 
* C:\Users\xavier\heenok\main.c|1184|error: `variable' was not declared in this scope|


Quel est le mot que t'as pas compris dans le texte suivant:  
`variable' was not declared in this scope
Est-ce "variable", "scope" ou simplement "declared" ???
 

jaco3th a écrit :

ps: desolé pour les balises, je n'ai pas trouvé


Mot clef "code=cpp" ou simplement "cpp" entre crochets et "/code" ou "/cpp" à la fin


Message édité par Sve@r le 06-09-2008 à 20:26:36

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1783520
jaco3th
Posté le 06-09-2008 à 23:10:05  profilanswer
 

Merci beaucoup, je vais revoir tout ça au clair demain (c'est la premiere fois que j'utilise une structure personnelle, je suis ultra novice).

n°1783872
jaco3th
Posté le 08-09-2008 à 14:10:01  profilanswer
 

Bon, je vous mets la où j'en suis, on sait jamais...
j'ai 21 erreurs;
ma declaration (dans ma fonction principale):
[cpp]struct PourChienr
{
    SDL_Rect positionChienr[16];
    long variable;
};/cpp
 
et:
 
[cpp]    struct PourChienr ensemble;
 
/cpp
 
Ensuite mes initialisation (toujours dans ma fonction principale):
[cpp]    for(i = 0; i < 16; i++)
    {
        ensemble.positionChienr[i].x = 100;
        ensemble.positionChienr[i].y = 100;
    }
 
    ensemble.positionChienr[0].x = 200;
    ensemble.positionChienr[0].y = 400;
 
 
    ensemble.variable = 0;
/cpp
 
mon timer (encore dans ma fonction principale):
[cpp]while(ensemble.positionChienr[15].x != 350)
        {
        timer = SDL_AddTimer(1000, animChienr, &ensemble);
        }
/cpp
Et enfin ma fonction animChienr:
[cpp] Uint32 animChienr(Uint32 intervalle, void *parametre)
{
   /* Conversion de void* en SDL_Rect* */
   struct PourChienr *ensemble = (struct PourChienr*)parametre;
   if (ensemble != NULL)
   {
      ensemble->positionChienr[ensemble->variable].x = 100;
      ensemble->positionChienr[ensemble->variable].y = 100;
      ensemble->variable ++;
 
      ensemble->positionChienr[ensemble->variable].x = 200 + ensemble->variable * 10;
      ensemble->positionChienr[ensemble->variable].y = 400;
   }
   return intervalle;
}
/cpp
Je suis à bout de nerfs lol(jaune).
 
 
 
 

n°1785287
Sve@r
Posté le 10-09-2008 à 21:54:17  profilanswer
 

Quand j'ai dit "/cpp" à la fin, je pensais que t'aurais compris qu'il faut aussi des crochets (comme au début)...
 

jaco3th a écrit :

Ensuite mes initialisation (toujours dans ma fonction principale):

Code :
  1. for(i = 0; i < 16; i++)
  2.     {
  3.         ensemble.positionChienr[i].x = 100;
  4.         ensemble.positionChienr[i].y = 100;
  5.     }
  6.     ensemble.positionChienr[0].x = 200;
  7.     ensemble.positionChienr[0].y = 400;
  8.     ensemble.variable = 0;



Pourquoi faire démarrer "i" à 0 alors que tu vas initialiser ensuite "ensemble.positionChienr[0]" ???
 

jaco3th a écrit :

mon timer (encore dans ma fonction principale):

Code :
  1. while(ensemble.positionChienr[15].x != 350)
  2.         {
  3.         timer = SDL_AddTimer(1000, animChienr, &ensemble);
  4.         }


Et enfin ma fonction animChienr:

Code :
  1. Uint32 animChienr(Uint32 intervalle, void *parametre)
  2. {
  3.    /* Conversion de void* en SDL_Rect* */
  4.    struct PourChienr *ensemble = (struct PourChienr*)parametre;
  5.    if (ensemble != NULL)
  6.    {
  7.       ensemble->positionChienr[ensemble->variable].x = 100;
  8.       ensemble->positionChienr[ensemble->variable].y = 100;
  9.       ensemble->variable ++;
  10.       ensemble->positionChienr[ensemble->variable].x = 200 + ensemble->variable * 10;
  11.       ensemble->positionChienr[ensemble->variable].y = 400;
  12.    }
  13.    return intervalle;
  14. }



Pourquoi "parametre" est "void *" ? Il pourrait pas être simplement "struct pourChienr *" ??? Et où est défini "intervalle" ???

jaco3th a écrit :

j'ai 21 erreurs;


C'est très souvent la première qui entraine les autres => le compilo bloque sur un truc et là, il part dans les choux et trouve des erreurs sur tout le reste. Donne la première erreur car en le lisant simplement, ton code me semble bon (sauf en ce qui concerne la variable "intervalle" )...
 

jaco3th a écrit :

c'est la premiere fois que j'utilise une structure personnelle, je suis ultra novice


bah tu te débrouilles bien. T'as bien pigé le principe du "->" et tu sais quand mettre "->" et quand mettre ".". C'est pas mal !!!


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1785314
jaco3th
Posté le 10-09-2008 à 22:25:17  profilanswer
 

Merci Sve@r, finalement j'ai utilisé SDL_GetTicks, quand à la fonction, j'ai trouvé ce prototype sur un site qui montrait comment utiliser les timers.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problemed'envoi et de reception à une fonction

 

Sujets relatifs
Prblème fonction offsetFonction WeekNum pour VBA
probléme avec fonction if dans oracle forms[VBA - Excel] Envoi d'un mail via un service gratuit
Adapter une fonction, affichage du nombre de pages[résolu]Appel de fonction
Sélection de données après filtre excel et envoi par OutlookFonction include pose problème intégration phpbb2
Image qui change en fonction position souris (Map Area + JS et/ou CSS)tableau en argument de fonction et pointeur de pointeur
Plus de sujets relatifs à : problemed'envoi et de reception à une fonction


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR