Como converter uma variável de definição não assinada em uma variável de definição assinada em C

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

Pergunta

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

...

Eu tenho esta parte do código onde preciso que uma string global (readMe) seja criada no momento da inicialização.A saída do código acima será -> A versão atual deste documento é 1U.Então o que eu quero é me livrar desse “U”.Existe uma chance de eu corrigir isso com funções de pré-processador? (como transformar o valor definido não assinado em um valor definido assinado ...)?

Foi útil?

Solução

Eu não acho que exista um método de pré-processador para retirar o U de VERSION.No entanto, você pode combiná-los.Eu sugeriria:

#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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top