Faire des couleurs portable [Fermé]

Signaler
Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018
-
Messages postés
254
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
15 février 2018
-
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 !

1 réponse

Messages postés
254
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
15 février 2018
22
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

Messages postés
366
Date d'inscription
mardi 28 juin 2016
Statut
Membre
Dernière intervention
18 mars 2018
9
ok merci de ta réponse je vais essayer
Messages postés
254
Date d'inscription
vendredi 29 août 2014
Statut
Membre
Dernière intervention
15 février 2018
22
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.