Pregunta

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

...

Tengo esta parte del código donde necesito que se cree una cadena global (léame) en el momento de la inicialización.El resultado del código anterior será -> La versión actual de este documento es 1U.Entonces lo que quiero es deshacerme de esa "U".¿Existe la posibilidad de que solucione este problema con funciones de preprocesador? (como transformar el valor definido sin firmar en un valor definido con signo...)?

¿Fue útil?

Solución

No creo que exista un método de preprocesador para eliminar el U de VERSION.Sin embargo, puedes combinarlos.Yo sugeriría:

#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 ".";
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top