Подтвердить что ты не робот

В c: func (void) vs. func()

Когда функция C не принимает никаких аргументов, нужно ли ее объявлять/определять с помощью параметра "void" с помощью правил языка? PC-Lint, похоже, имеет проблемы, когда в списке аргументов ничего нет вообще, и мне было интересно, если это что-то в синтаксисе языка, о котором я не знаю.

Изменить: Я только что нашел дубликат (back-dupe? он пришел первым) вопрос, C void arguments, который имеет больше ответов и объяснения.

4b9b3361

Ответ 1

void означает, что функция не принимает никаких параметров. Например,

int init (void)
{
    return 1;
}

Это не то же самое, что определение

int init ()
{
    return 1;
}

потому что во втором случае компилятор не проверяет, действительно ли функция вызывается без каких-либо аргументов; вместо этого вызов функции с произвольным числом аргументов будет принят без каких-либо предупреждений (это реализовано только для совместимости с синтаксисом определения стиля старого стиля, pre-ANSI).

Ответ 2

Функция IIRC func (void) в C объявит функцию, которая не принимает никаких параметров, тогда как функция func() объявляет функцию, которая будет принимать любое количество параметров. Я считаю, что последний является артефактом, исходящим от ANSI C.

В соответствии с Wikipedia, выражение func() в основном объявляет функцию "без информации о параметрах".