LINUX.ORG.RU

Подскажите про макросы в С-ях


0

0

Вот есть у меня, положим, макросы MAXBETASIZE и MAXALPHASIZE и хочется примитивного и простого - избежать переполнения буфера при чтении строк посредством sscanf такого вида:

sscanf(BIGstring, "%s[%s]", mbeta, malpha);

но вот как вставить значение макроса между '%' и 's' - не могу понять, %*s тут не работает, а имя макроса вставить между '%' и 's' не получается :-(

anonymous

Ах да, компилировать нужно не только GCC, но и в AIX (там ANSI C/C99 компилятор). Но мои попытки не работали даже в GCC :-(

anonymous
()
Ответ на: комментарий от vasirck

Я конечно все понимаю, но макрос - это константа и как то не хочется добавлять лишний код (даже на бред похоже), чтобы всего лишь определить размер буфера :-(

Неужели в С этого сделать нельзя?

anonymous
()
Ответ на: комментарий от anonymous

Можно:

#define _s(a) #a

#define _string(a) _s(a)

sscanf(bigstring, "%" _string(MAXBETASIZE) "s", &beta);

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.