Использование "void" в C - PullRequest
       0

Использование "void" в C

11 голосов
/ 06 сентября 2011

Я не понимаю, почему нам нужно передать void в функции C:

int f(void) { return 0; }

против

int f() { return 0; }

Что делать и почему?

Ответы [ 3 ]

16 голосов
/ 06 сентября 2011

В C * int f() - объявление старого стиля. Он говорит, что f ожидает фиксированное, но неуказанное число и тип (ы) аргументов. Например, учитывая int f() { return 0; }, компилятор не будет жаловаться на f(42) или f("hello, world") (хотя поведение такого вызова не определено).

int f(void) прямо говорит, что f не принимает аргументов.

(C ++ имеет другие правила; Страуструп не заботился о обратной совместимости со старым кодом C).

5 голосов
/ 06 сентября 2011

Это пережиток С.

f(void) не принимает аргументов, поэтому f(1) недопустимо.

f() означает, что параметры не определены, поэтому f(1) здесь допустимо.

0 голосов
/ 06 сентября 2011

void в данном случае означает «нет параметров».Я не уверен, скомпилируется ли ваш второй случай, но в любом случае я бы предпочел, чтобы первый случай был как можно более понятным.Конечно, при вызове f вы просто используете пустые скобки:

int x = f();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...