Цитата:
Сообщение от 220Volt
Предоположу, что функция может заинлайниться и логика сломается (в случае, когда не используются va_start, va_arg, va_end). Проверить не сложно, но времени на проверку нет.
|
Хотя вряд ли. Такие функии не инлайнятся (вероятно, не проверял). va_ функции, наверное, нужны для срытие различных низкоуровневых особенностей, например выравнивание. Возьмём структуру:
Код:
struct S
{
int i;
double d;
};
Выравнивание этой структуры будет либо 4, либо 8 (зависит от архитектуры). А теперь представим, что мы вызываем функцию и кладём в стек int и S за ним (int попал в адрес некратный 8). В зависимости от архитектуры между int и S будет вставлено 4 байта.