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 )
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.
Faut pas oublier de convertir car sleep() dans unistd prend des secondes en arg et Sleep() de Win32 des millisecondes
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
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.
Genre#define sleep(argument) Sleep(argument)
int temps = 3000;
sleep(temps);
Car cela ne marche pas >:
C'est bizarre.
Il te met quoi comme message d'erreur ?
Utilise des fonctions portables plutôt.
poll ou select plutôt que d'utiliser sleep.