Comment convertir une variable de définition non signée en une variable de définition signée en C

StackOverflow https://stackoverflow.com//questions/25041215

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...) ?

Était-ce utile?

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
scroll top