не принимает параметры, и вызывать его с любым не определено.
должен вызываться с тем же номером и теми же типами параметров, которые были определены, но компилятор не будет проверять это. Если вы запутались, это неопределенное поведение.
, чтобы объявить функцию без параметров (и, таким образом, получить сообщение об ошибке, если вы запутались), используйте
void g (void);
функция может быть переменной, но для ее вызова вы должны увидеть объявление о том, что функция является переменной:
void h (int nb, ...);
(Не то чтобы в C функция с переменными значениями должна иметь хотя бы один невариационный параметр, в C ++ это не так)
Минимальное ограничение на количество параметров (для любой функции) составляет 127. (Ну, в стандарте говорится, что реализация должна иметь возможность компилировать хотя бы одну программу, достигающую этого предела).
-
Чтобы устранить путаницу:
void f() { ... }
против
void g(void) { ... }
f
определяется как не принимающий параметры и не может быть вызван ни с каким параметром, объявленным как принимающий неизвестное количество параметров, поэтому компилятор не будет гарантировать, что никакие параметры не заданы. g
определен и объявлен как принимающий никаких параметров. Это осталось дней K & R с определениями функций, такими как
int h()
int i;
{...}
, который объявляет функцию, принимающую неопределенное количество параметров, но определяет ее как принимающую один параметр типа int. Этот стиль совершенно не в моде, и единственный оставшийся случай практической важности - это один против другого.