Пустой список параметров в функции объявление указывает, что функция принимает неопределенное количество аргументов (что не совпадает с переменная количество аргументов).Пустой список параметров в функции определение (например, в первом определении f
) указывает на то, что функция принимает нет аргументов.Это устаревший стиль, и его не следует использовать - чтобы указать, что функция не принимает параметров, используйте void
в качестве списка идентификаторов.
Начиная с C89, у объявления функций переменной должно быть как минимум один фиксированный параметр, за которым следует ...
.Таким образом, второе определение f
также не будет работать.
int f( void ) // f takes no arguments
{
// do something
}
int f( T fixed, ... ) // one fixed parameter of some type, additional parameters as needed
{
// do something
}
printf
- такой же хороший пример функции с переменными числами в стандартной библиотеке, как и любая другая - ее прототип -
int printf( const char *fmt, ... );