Объявление параметров функции после имени функции - PullRequest
5 голосов
/ 20 июля 2009
int func(x)
int x;
{
    .............

Как называется такая декларация?

Когда он действителен / недействителен, включая C или C ++, определенные стандартные редакции и компиляторы?

Ответы [ 5 ]

12 голосов
/ 20 июля 2009

Это синтаксис объявления параметров K & R C, который действителен в ANSI C, но не в C ++.

5 голосов
/ 20 июля 2009

Это все еще действует, но это предварительно ANSI. Вот на самом деле стиль отступа K & R получил свое название. Открывающая скобка находится на строке после функционального блока, потому что это выглядит странно:

int func(x)
int x; {
...
}

В любом случае, этот стиль не рекомендуется из-за проблемы с прототипами функций .

4 голосов
/ 20 июля 2009

Это старый стиль C. Его редко видели.

4 голосов
/ 20 июля 2009

Стиль K & R, и я думаю, что он все еще действителен, хотя обескуражен. Вероятно, он пришел из Фортрана (где типы параметров функции определены внутри тела функции еще в недавнем F95)

0 голосов
/ 20 июля 2009

Это прототип функции. Если бы вы не сделали это таким образом, вам пришлось бы полностью написать функцию перед main, иначе компилятор не знал бы, что это была за функция, когда вы использовали ее в main. Это не очень наглядно, поэтому больше не используется. Вы хотели бы использовать что-то вроде:

int someFunction(int someParamX int someParamY);
...