Вопрос

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

Редактировать: Я только что нашел дубликат (бэк-дуп?это было первым) вопрос, C недействительные аргументы, где больше ответов и объяснений.

Это было полезно?

Решение

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

int init (void)
{
    return 1;
}

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

int init ()
{
    return 1;
}

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

Другие советы

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

В соответствии с Википедия здесь объявление func() по сути объявляет функцию «без информации о параметрах».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top