Faire des couleurs portable
Dark_another
Messages postés
393
Statut
Membre
-
paly2 Messages postés 261 Statut Membre -
paly2 Messages postés 261 Statut Membre -
Bonjour,
Je code en c++ sur un programme et je voulais mettre des couleurs ! évidement j'ai pensé au hédeurs de windows ( include <windows.h> ) et aux system ("...") mais le problème est que ce n'est pas portable et je me posais comme question :" est-ce que on peut avoir les couleurs portable ? " . Je travail sur console . Pourriez-vous m'aidé s'il-vous-plait ?
merci d'avance !
Je code en c++ sur un programme et je voulais mettre des couleurs ! évidement j'ai pensé au hédeurs de windows ( include <windows.h> ) et aux system ("...") mais le problème est que ce n'est pas portable et je me posais comme question :" est-ce que on peut avoir les couleurs portable ? " . Je travail sur console . Pourriez-vous m'aidé s'il-vous-plait ?
merci d'avance !
1 réponse
-
Malheureusement, il n'y a aucun moyen standard de mettre des couleurs dans la console !
Le mieux que tu puisses faire est donc d'utiliser des directives de préprocesseur pour faire un code portable sur les plus grands systèmes d'exploitation (les mastodontes étant Microsoft Windows et GNU/Linux, et parfois aussi FreeBSD).
Par exemple:#ifdef _WIN32 // Code pour Windows, avec <windows.h> par exemple... #elif defined(linux) // Code pour GNU/Linux, avec les séquences de contrôle par exemple (voir: http://misc.flogisoft.com/bash/tip_colors_and_formatting )... #else // Triste code standard sans couleur. #endif
-
-
Je rajoute juste: fais des directives de préprocesseur à tous les endroits ou le code diffère, il vaut mieux qu'il y ait beaucoup de directives de préprocesseur que des lignes de code répétées pour à la fois GNU/Linux et Windows.
De plus, comme tu le sais, si pour un OS il n'y a aucune ligne à mettre, il ne sert à rien de donner une condition au préprocesseur. Par exemple, pour l'inclusion de <windows.h>, qui n'est remplacée par aucune ligne sous GNU/Linux (en effet les séquences de contrôle ne nécessitent pas d'inclusion spéciale), il suffit de faire:#ifdef _WIN32 #include <windows.h> #endif
Sans préciser de #elif ni de #else, puisqu'ils seraient vides.
-