Доступ к параметрам, переданным в функцию с пустым списком параметров в C

Поскольку функциям с пустыми списками параметров может быть передано переменное число параметров в C, предположим, у меня есть функция, определенная как:

void foo(){
// I want to access the parameters passed in here
}

И я называю это аргументами, скажем

foo(1,2,3);

Могу ли я получить значения этих переданных аргументов внутри моей функции foo()? Я надеюсь на что-то вроде $_, переменной по умолчанию в Perl.

РЕДАКТИРОВАТЬ: ожидаемое им поведение похоже на то, что изображено в этом вопросе: функция C без параметров поведения

2 ответа

C99:

6.5.2.2 Вызовы функций

[...]

  1. Если выражение, обозначающее вызываемую функцию, имеет тип, который не содержит прототип, целочисленные преобразования выполняются для каждого аргумента и аргументов, которые имеют тип float повышены до double, Это называется продвижением аргументов по умолчанию. Если количество аргументов не равно количеству параметров, поведение не определено.

(Акцент мой.)

таким образом foo(1,2,3) имеет неопределенное поведение. Не гарантируется даже ввод тела функции, не говоря уже о предоставлении вам доступа к дополнительным аргументам.

неопределенное поведение
Может быть, вам нужно Variadic Arguments

Другие вопросы по тегам