Bonsoir,
Je suis en train de faire un logger interne dans une application complexe au lieu de passer directement par un printf qui ne permettrais pas de flexibilité plus tard.
J'ai donc décidé de faire un struct avec mes données dedans comme je le souhaite seulement pour envoyer des messages à ce log, la plupart du temps je formate mes chaînes avec printf. J'ai vu qu'on pouvait implémenter directement le code printf dans mon logger. Cependant, cela casse la compatibilité avec les autres systèmes d'exploitation (à ce que j'ai vu) car le code est différent.
Est-ce que ce code ne fonctionne que sous la plat-forme Unix/Linux ou bien me suis-je tromper ? D'autre part, n'y a-t-il aucune autre solution qui puisse y remédier: un sprintf qui au lieu de modifier un char* en retourne un (char *sprintf(char *in, ...)) résoudrais mes problèmes. Aussi si d'une autre manière je pouvais passer les paramètres "..." au sprintf de la plat-forme je pourrais régler mes problèmes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void loggerPush(Logger *log, char *fmt, ...) { unsigned int time = clock(); char message[255]; // sprintf code va_list args; va_start(args, fmt); vsprintf(message,fmt,args); va_end(args); // end /* Affiche/Sauve le message */ }
Qu'en pensez-vous ? Merci d'avance.
Partager