Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
см. https://ru.wikipedia.org/wiki/Stdarg.h 11.11.14 15:45 Число просмотров: 2040
Автор: leo <Леонид Юрьев> Статус: Elderman
|
> Сюда я закинул уже вырожденный пример. Естественно, что > наткнулся я на этот "баг" используя в качестве параметра > переменную "unsigned long long int". Результат идентичен. > > P.S. Убрал "звёздочку" - заработало. > > [upd] > Сдается мне, что printf воспринимает абсолютно все > переданные параметры (включая строку формата), как массив > символов, а далее идет парсинг строки формата и на основе > данных этой строки разгребаются все остальные параметры в > пределах кадра стека.
см. https://ru.wikipedia.org/wiki/Stdarg.h
printf использует va_start/va_end для вызова vprintf.
в свою очередь vprintf использует va_arg для "листания" переданных на стеке параметров согласно спецификации формата.
сама строка формата размещается просто как массив символов с 0 на конце и передается первым параметром в виде указателя на первый элемент массива.
в "плюшевых" языках типа python, С# и т.п. параметры передаются в виде объектов, которые в частности знают свой тип, см например google + box unbox c#
|
|
|