Как преобразовать переменную определения неподписанных в подписанной переменной определении в C
-
21-12-2019 - |
Вопрос
#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 ".";
.
...
У меня есть эта часть кода, где мне нужна глобальная строка (README), которая будет создана при времени инициализации. Выход вышеуказанного кода будет -> Текущая версия этого документа составляет 1U. Так что я хочу, это избавиться от этого «U». Есть ли шанс, что я исправлю это с предварительнопроцессорами функциями? (Как преобразовать определенное значение без знака без знака для подписанного определения ...)?
Решение
Я не думаю, что есть метод предпроцессора для вывода генеракодицетагкода из U
.Однако вы можете объединить их.Я бы предложил:
#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 ".";
. Не связан с StackOverflow