So konvertieren Sie eine vorzeichenlose Definitionsvariable in eine vorzeichenbehaftete Definitionsvariable in C

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

Frage

#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 ".";

...

Ich habe diesen Teil des Codes, in dem ich zum Zeitpunkt der Initialisierung eine globale Zeichenfolge (readMe) erstellen muss.Die Ausgabe des obigen Codes lautet -> Die aktuelle Version dieses Dokuments ist 1U.Was ich also möchte, ist, dieses „U“ loszuwerden.Gibt es eine Chance, dass ich das mit Präprozessorfunktionen behebe? (z. B. den vorzeichenlosen definierten Wert in einen vorzeichenbehafteten definierten Wert umwandeln ...)?

War es hilfreich?

Lösung

Ich glaube nicht, dass es eine Präprozessormethode gibt, um das herauszunehmen U aus VERSION.Sie können sie jedoch kombinieren.Ich würde vorschlagen:

#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 ".";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top