J'utilise une bibliothèque tierce qui a beaucoup de différents codes d'erreur. Un inclure des fichiers contient un tas de lignes comme:extraire des messages de chaîne de l'ensemble de #define
#define ABC_INVALID_BUFFER_SIZE 101
#define ABC_INVALID_COMMAND 102
etc.
Lors de l'exécution, je suis obtenir différents codes d'erreur que je développe ma demande. Je veux, à l'exécution, que l'application imprime des messages comme "error: ABC_INVALID_COMMAND", au lieu de l'imprimer "error: 102". Je veux avoir une carte de traduction de sortes qui me permet de convertir les nombres en texte en utilisant map [code]. Donc, ce que je cherche est un mécanisme qui me permet, au moment de la compilation, d'analyser le fichier include et de le convertir en map [102] = string ("ABC_INVALID_COMMAND"). Je peux le faire en utilisant un script awk, mais je me demande s'il existe un mécanisme qui existe déjà. Sûrement je ne peux pas être le premier qui veut/doit faire ceci? Quelque chose d'évident que je n'ai pas encore découvert?
Je pense que vous feriez mieux d'écrire (à la main) une fonction qui traduit les codes dans un message d'erreur lisible par l'homme. Cela peut être aussi simple qu'une instruction switch() qui renvoie une chaîne de caractères constante. De nombreuses bibliothèques fournissent déjà une telle chose (par exemple, ldap_err2string() pour LDAP); mais si votre bibliothèque tierce ne vous l'offre pas, il vaut peut-être mieux passer un peu de temps à en coder une à la main. –
1000 de messages, la plupart d'entre eux je ne sais pas ce qu'ils signifient? – Mike