Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определение функции указывает имя функции, типы и количество параметров, которые он ожидает получать, и его возвращаемый тип. Определение функции также включает тело функции с объявлениями своих локальных переменных, а также инструкции, определяющие, что делает функция.
Синтаксис
translation-unit:
external-declaration
translation-unit
external-declaration
external-declaration: /* Разрешено только во внешней области (файла) */
function-definition
declaration
function-definition:
declaration-specifiers
выбиратьattribute-seqвыбиратьdeclaratordeclaration-listвыбиратьcompound-statement
/*
attribute-seq — это microsoft-specific */
Параметры прототипа:
declaration-specifiers:
storage-class-specifier
declaration-specifiers
выбирать
type-specifier
declaration-specifiers
выбирать
type-qualifier
declaration-specifiers
выбирать
declaration-list:
declaration
declaration-list
declaration
declarator:
pointer
выбиратьdirect-declarator
direct-declarator: /* Декларатор функции */
direct-declarator
(
parameter-type-list
) /* Декларатор нового стиля */
direct-declarator
(
identifier-list
выбирать) /* Устаревший декларатор */
Список параметров в определении использует следующий синтаксис:
parameter-type-list: /* Список параметров */
parameter-list
parameter-list
, ...
parameter-list:
parameter-declaration
parameter-list
,
parameter-declaration
parameter-declaration:
declaration-specifiers
declarator
declaration-specifiers
abstract-declarator
выбирать
Список параметров в определении функции старого стиля использует следующий синтаксис:
identifier-list: /* Используется в определениях и объявлениях функций устаревшего стиля */
identifier
identifier-list
,
identifier
Синтаксис текста функции:
compound-statement:
{
declaration-list
выбиратьstatement-listвыбирать}
Единственными описателями класса хранилища, которые могут изменить объявление функции, являются extern и static. Описатель extern указывает, что функция может ссылаться из других файлов. То есть имя функции экспортируется в компоновщик. Описатель static означает, что функция не может ссылаться из других файлов. То есть имя не экспортируется компоновщиком. Если класс хранилища не отображается в определении функции, extern предполагается. В любом случае функция всегда отображается с точки определения до конца файла.
Необязательный declaration-specifiers и обязательный declarator вместе указывают возвращаемый тип и имя функции. Это declarator сочетание идентификатора, который называет функцию и скобки после имени функции. Необязательный attribute-seq нетерминальный — это функция, определенная корпорацией Майкрософт в атрибутах функций.
( direct-declarator в синтаксисе declarator ) указывает имя определяемой функции и идентификаторы его параметров. Если он direct-declarator содержит parameter-type-list, список указывает типы всех параметров. Такой декларатор также служит прототипом функции для последующих вызовов функции.
В declaration определениях функций не может содержаться другое storage-class-specifierregister.declaration-list В type-specifier синтаксисе declaration-specifiers можно исключить только в том случае, если register для значения int типа указан класс хранилища.
Это compound-statement тело функции, содержащее объявления локальных переменных, ссылки на внешние объявленные элементы и инструкции.
В разделах "Атрибуты функции", "Класс хранилища", "Возвращаемый тип", " Параметры" и "Текст функции " подробно описываются компоненты определения функции.