Как преобразовать переменную определения неподписанных в подписанной переменной определении в C

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

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top