Comment convertir une variable de définition non signée en une variable de définition signée en C
-
21-12-2019 - |
Question
#define VERSION 1U
#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)
#define VERSION_STRING VALUE_TO_STRING(VERSION)
char readMe[] = "The current version of this document is " VERSION_STRING ".";
...
J'ai cette partie du code où j'ai besoin qu'une chaîne globale (readMe) soit créée au moment de l'initialisation.La sortie du code ci-dessus sera -> La version actuelle de ce document est 1U.Donc ce que je veux, c'est me débarrasser de ce « U ».Y a-t-il une chance que je résolve ce problème avec des fonctions de préprocesseur ? (comme transformer la valeur définie non signée en une valeur définie signée...) ?
La solution
Je ne pense pas qu'il existe une méthode de pré-processeur pour supprimer le U
depuis VERSION
.Cependant, vous pouvez les combiner.Je voudrais suggerer:
#define UNSIGNED_VERSION 1
#define VERSION UNSIGNED_VERSION ## U
#define _VALUE_TO_STRING(x) #x
#define VALUE_TO_STRING(var) _VALUE_TO_STRING(var)
#define VERSION_STRING VALUE_TO_STRING(UNSIGNED_VERSION)
char readMe[] = "The current version of this document is " VERSION_STRING ".";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow