Какие имена используются для описания «верхней» и «нижней» частей определения функции в стиле C? - PullRequest
1 голос
/ 15 марта 2011

Я ищу имя или фразу для определения двух отдельных частей определения функции

1. Часть, которая выглядит точно так же, как объявление функции (минус точка с запятой)
2. Остальное (часть внутри фигурных скобок и включая их)

int someFunction(int value, bool flag)  // part one
{ ... }                                 // part two

Есть ли приемлемый способ описания этих двух частей?

Ответы [ 6 ]

3 голосов
/ 15 марта 2011

Я называю их заголовком функции и телом функции.Быстрый взгляд на Harbison & Steele не дает им настоящих имен.

2 голосов
/ 15 марта 2011

Я бы использовал прототип и тело.Тело широко используется для этой цели, формально прототип имеет немного другое значение.

Редактировать: Стандартное использование декларатор функции (иногда сокращается до декларатор ) и корпус .Например, в 6.9.1 / 13, который является примером, заявляющим

В следующем:

extern int max(int a, int b)
{
    return a > b ? a : b;
}

extern является спецификатором класса храненияint - спецификатор типа;max(int a, int b) является декларатором функции;и { return a > b ? a : b; } - тело функции.

1 голос
/ 15 марта 2011

Вот грамматика для определения функции:

<i>function-definition:</i>
    <i>declaration-specifiers declarator declaration-list<sub>opt</sub> compound-statement</i>

Обычно я не особо различаю их. Если бы я нажал, я бы использовал «тело» для части {...} и «подпись» или «прототип» для остальных.

1 голос
/ 15 марта 2011

main не имеет прототипа - так говорит Стандарт - и мне немного не нравится заголовок.

Поэтому я называю их «сигнатура функции» и «тело функции».

1 голос
/ 15 марта 2011

Функции имеют объявление, определение и тело-прототип функции.

void SomeFunction(void);  //Prototype declaration.

void SomeFunction(void) /*Function Definition*/ { /*Function Body*/ }

1 голос
/ 15 марта 2011

Вот интересный кусочек ... http://msdn.microsoft.com/en-us/library/w3sez2yb.aspx

часть первая может быть прототипом функции, часть вторая называется функцией тела.

...