Использование препроцессора C для создания строкового литерала для scanf?

Я пытаюсь создатьsscanf строковый литерал для помощи в предотвращении переполнения буфера в C99. Цель что-то вроде:

#define MAX_ARG_LEN   16

char arg[MAX_ARG_LEN] = "";

if (sscanf(arg, "%"(MAX_ARG_LEN-1)"X", &input) > 0)

Очевидное «ручное» решение выглядит примерно так:

#define MAX_ARG_LEN   16
#define MAX_ARG_CHARS "15"

char arg[MAX_ARG_LEN] = "";

if (sscanf(arg, "%"MAX_ARG_CHARS"X", &input) > 0)

Тем не менее, я бы предпочел, чтобы что-то автоматически генерировало «% 15X», учитывая размер буфера 16. Эта ссылкапочти работает для моего приложения:Преобразовать токен препроцессора в строку но он не обрабатывает -1.

Предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос