Como converter uma variável de definição não assinada em uma variável de definição assinada em C
-
21-12-2019 - |
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 ...)?
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