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

SDL Discussion :

[C++]Timer pour exécution séparée


Sujet :

SDL

  1. #21
    Invité4
    Invité(e)
    Par défaut
    voilà
    ce code fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Uint32 interval;
    static Uint32 callback(Uint32 interval)
    {
      return interval;
    }
     
        SDL_SetTimer(1000, callback);
    Merci à vous encore

  2. #22
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    Citation Envoyé par fearyourself
    Euhhhh... Depuis quand? Parce qu'en C ou en C++, ce n'est pas vrai. Je t'accorde que le compilateur devrait dire quelque chose (j'ai copié la même **** ) mais cela ne veut pas dire qu'il va changer le prototype...

    Ou alors j'apprends quelque chose de vraiment nouveau ce soir
    Jc
    C'etais une deduction à l'arrache (Je pensais que c'etais l'erreur du compilateur due au fait que la fonction ne retournait rien, encore une fois je vais trop vite en besogne...)

    Content que ton problème soit réglé eldacar, j'ai pas essayé de compiler le timer d'avant, mais je peux toujours essayer demain si ça t'interesse.

  3. #23
    Invité4
    Invité(e)
    Par défaut
    Citation Envoyé par loka
    C'etais une deduction à l'arrache (Je pensais que c'etais l'erreur du compilateur due au fait que la fonction ne retournait rien, encore une fois je vais trop vite en besogne...)

    Content que ton problème soit réglé eldacar, j'ai pas essayé de compiler le timer d'avant, mais je peux toujours essayer demain si ça t'interesse.
    Non, pas besoin merci, j'ai intégré mon timer à mon programme, ça fonctionne comme je le voulais, c'est parfait.
    Donc merci à Laurent Gomila, Loka, fearyourself pour votre aide.
    On y est arrivé pour finir, mais c'était vraiment tordu ce problème

  4. #24
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Eldacar
    Non, pas besoin merci, j'ai intégré mon timer à mon programme, ça fonctionne comme je le voulais, c'est parfait.
    Donc merci à Laurent Gomila, Loka, fearyourself pour votre aide.
    On y est arrivé pour finir, mais c'était vraiment tordu ce problème
    A mon avis ton problème n'en est pas vraiment un. Je pense que t'avais simplement un problème de déclaration. Je suspecte que si tu enlèves ta variable globale et le mot clé static, ton code fonctionnera encore

    Jc

    Si jamais c'est pas le cas, je serais d'accord pour dire que c'est tordu

  5. #25
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Effectivement c'est pas normal du tout

    Je soupçonne aussi que l'erreur se trouvait ailleurs.

  6. #26
    Invité4
    Invité(e)
    Par défaut
    Je suspecte que si tu enlèves ta variable globale et le mot clé static, ton code fonctionnera encore
    effectivement, ça fonctionne encore
    J'avoue que je n'ai pas saisi pourquoi ça compilait pas, j'ai seulement saisi quel code compile.

  7. #27
    Rédacteur

    Avatar de loka
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    2 672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 672
    Points : 5 509
    Points
    5 509
    Par défaut
    A la recherche de l'erreur perdue

    Bon maintenant ça fonctionne c'est le principal... le problème serais que ça te revienne dessus un jour où tu ajouterais quelquechose...

  8. #28
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par loka
    A la recherche de l'erreur perdue
    C'est clair

    Bon maintenant ça fonctionne c'est le principal...
    Je ne suis pas d'accord, en plus tu donnes la raison de mon désaccord :

    le problème serais que ça te revienne dessus un jour où tu ajouterais quelquechose...
    Tu passeras des heures sur ton "nouveau" code pour trouver l'erreur et en fait le problème vient de l'ancien code... Et tu seras comme ceci: ou



    Jc

  9. #29
    Invité4
    Invité(e)
    Par défaut
    oui c'est sur, mais je sais comment construire ce code pour que la fonction callback soit acceptée, donc je pense que c'est OK malgré que l'erreur me soit inconnue.

  10. #30
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    La fonction de Callback DOIT renvoyer une valeur (Uint32) pour qu'elle continue à être appelée.
    Dans tous les codes postés avant celui qui fonctionne, aucune valeur Uint32 n'était renvoyée.

    Je pense que c'est la source de l'erreur (et sans static, ça devrait aussi passer).

  11. #31
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par florent28
    La fonction de Callback DOIT renvoyer une valeur (Uint32) pour qu'elle continue à être appelée.
    Dans tous les codes postés avant celui qui fonctionne, aucune valeur Uint32 n'était renvoyée.

    Je pense que c'est la source de l'erreur (et sans static, ça devrait aussi passer).
    Tu n'aurais pas loupé la seconde page de ce topic ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    static Uint32 ticktock(Uint32 interval)
    {
        int ticks = 0;
        ++ticks;
        return(ticks);
    }
     
    // appelé dans une fonction
    SDL_AddTimer(44, &ticktock);
    me donne toujours

    game_engine.cpp:193: erreur: invalid conversion from ‘Uint32 (*)(Uint32)’ to ‘Uint32 (*)(Uint32, void*)’
    Je suspecte que si tu enlèves ta variable globale et le mot clé static, ton code fonctionnera encore
    effectivement, ça fonctionne encore

  12. #32
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 22
    Points : 14
    Points
    14
    Par défaut
    La valeur que tu retournes est le nouveau délai entre les timers, donc pour un timer régulier, tu as tout intérêt à retourner le timer de départ.
    Et la fonction demande de renvoyer une valeur Uint32, à voir si renvoyer une simple valeur int (même si je sais que Uint32 est un unsigned int) suffit.

  13. #33
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour a Tous,

    Selon moi, l'erreur réside dans la façon dont le pointeur de fonction est passé, car les premiers exemples qui échouaient étaient passés de la façon suivante :

    SDL_TimerQQchose(10000, &RefreshServer)

    Remarquer la sperluette(&) qui doit donner l'adresse du pointeur, car je crois que, comme un tableau en C/C++, 'RefreshServer' est un pointeur de fonction en tant que tel... sans les parenthèses.

    MikE

  14. #34
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par MeVoN Voir le message
    Bonjour a Tous,

    Selon moi, l'erreur réside dans la façon dont le pointeur de fonction est passé, car les premiers exemples qui échouaient étaient passés de la façon suivante :

    SDL_TimerQQchose(10000, &RefreshServer)

    Remarquer la sperluette(&) qui doit donner l'adresse du pointeur, car je crois que, comme un tableau en C/C++, 'RefreshServer' est un pointeur de fonction en tant que tel... sans les parenthèses.

    MikE
    Non c'est faux. Si tu insinues que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_TimerQQchose(10000, &RefreshServer)
    est différent de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SDL_TimerQQchose(10000, RefreshServer)
    alors non ce n'est pas vrai. Dans ce cas précis, si RefreshServer est une fonction alors avec ou sans le &, c'est la même chose.

    Jc

Discussions similaires

  1. [VBA-EXcel] Timer pour mise jour automatique
    Par Dos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/09/2006, 20h36
  2. [VB.Net] Timer pour fermer et ouvrir une form
    Par badnane2 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 09/08/2006, 13h09
  3. [VB.NET] Label - Un timer pour tous ?
    Par b_lob dans le forum Windows Forms
    Réponses: 2
    Dernier message: 01/05/2006, 15h56
  4. creer une page avec timer pour 2 URLS
    Par anubisme dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2006, 11h03
  5. Réponses: 4
    Dernier message: 24/11/2005, 08h34

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