CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [C] Gestion du temps et compatibilité

DébutPage précedente
1
Page suivantePage suivante
lemoino lemoino
MP
Niveau 10
29 mars 2015 à 11:09:32

Bonjour à tous,
J'aimerais bien faire une pause dans un programme console mais je ne connais pas la meilleure manière. Pour l'instant j'ai fait un #define pour windows.h et unistd.h

#ifded __WIN32__ #include <windows.h> #define sleep() Sleep() #else #include <unistd.h> #endif

Mais je ne sais pas comment passer un int en argument pour que ça marche pour les deux sans rajouter encore un ifdef dans le code comme c'est du préprocesseur, quelqu'un a une idée ? Ou une meilleure utilisation ?

(en gros je veux que quand j'écris sleep(temps); ou temps est un int, que ça marche pour les 3 OS )

Ace_Attorney Ace_Attorney
MP
Niveau 10
29 mars 2015 à 11:25:14

Tu peux très bien faire à coup de define, tu genre.

#define sleep(argument) Sleep(argument)

Mais je te conseille largement plus de faire plusieurs fonctions par architecture, de cette façon.

#ifdef __WIN_32__

void wait_second(int time) {
  // Windows function
}

#else

void wait_second(int time) {
  // Linux function
}
#endif

Ça te permettre de garder le typage, mais aussi au cas où la fonction Windows a un autre fonctionnement que la fonction linux, de pouvoir l'utiliser sans problème.

kernel[] kernel[]
MP
Niveau 10
29 mars 2015 à 11:29:28

Faut pas oublier de convertir car sleep() dans unistd prend des secondes en arg et Sleep() de Win32 des millisecondes

lemoino lemoino
MP
Niveau 10
29 mars 2015 à 11:47:58

D'accord merci de vos réponses :-)
Mais, dans ta première solution Ace, que puis-je mettre en argument dans la macro comme un int ? J'ai essayé plusieurs choses mais C::B me fait des erreurs invraisemblables

Ace_Attorney Ace_Attorney
MP
Niveau 10
29 mars 2015 à 12:20:53

Le 29 mars 2015 à 11:47:58 lemoino a écrit :
D'accord merci de vos réponses :-)
Mais, dans ta première solution Ace, que puis-je mettre en argument dans la macro comme un int ? J'ai essayé plusieurs choses mais C::B me fait des erreurs invraisemblables

Tu fais un simple sleep(5);, ou ta variable.

lemoino lemoino
MP
Niveau 10
29 mars 2015 à 12:32:29

Genre
#define sleep(argument) Sleep(argument) int temps = 3000; sleep(temps);

Car cela ne marche pas >:

Ace_Attorney Ace_Attorney
MP
Niveau 10
29 mars 2015 à 19:27:35

C'est bizarre.

Il te met quoi comme message d'erreur ?

Pseudo supprimé
Niveau 10
30 mars 2015 à 15:42:33

Utilise des fonctions portables plutôt.

poll ou select plutôt que d'utiliser sleep.

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment