Faire des couleurs portable

Fermé
Dark_another Messages postés 366 Date d'inscription mardi 28 juin 2016 Statut Membre Dernière intervention 18 mars 2018 - 29 juil. 2016 à 19:20
paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 - 3 août 2016 à 18:18
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

paly2 Messages postés 254 Date d'inscription vendredi 29 août 2014 Statut Membre Dernière intervention 15 février 2018 25
3 août 2016 à 11:59
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

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