Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Описатель класса хранения в определении функции предоставляет ей класс хранения extern или static.
Синтаксис
function-definition:
declaration-specifiers
необ.attribute-seqнеоб.declaratordeclaration-listнеоб.compound-statement
/*
attribute-seq используется только в системах Майкрософт */
declaration-specifiers:
storage-class-specifier
declaration-specifiers
необ.
type-specifier
declaration-specifiers
необ.
type-qualifier
declaration-specifiers
необ.
storage-class-specifier: /* Для определений функций */
extern
static
Если определение функции не содержит , storage-class-specifierкласс хранилища по умолчанию имеет значение extern. Вы можете явно объявить функцию как extern, но она не требуется.
Если объявление функции содержит storage-class-specifierextern, идентификатор имеет ту же компоновку, что и любое видимое объявление идентификатора с областью файла. Если нет видимого объявления с областью действия файла, идентификатор имеет внешнюю компоновку. Если идентификатор имеет область файла и нет storage-class-specifier, идентификатор имеет внешнюю компоновку. Внешняя компоновка означает, что каждый экземпляр идентификатора определяет один и тот же объект или функцию. Дополнительные сведения о компоновке и области файлов см. в разделе "Время существования", "Область", " Видимость" и "Компоновка".
Объявления функций в области видимости блока с описателем класса хранения, отличным от extern, приводят к ошибкам.
Функция с static классом хранилища отображается только в исходном файле, в котором он определен. Все остальные функции, независимо от того, предоставляются extern ли они классу хранилища явно или неявно, отображаются во всех исходных файлах программы. Если требуется класс хранения static, он должен быть объявлен в первом объявлении функции (при его наличии) и в определении функции.
Блок, относящийся только к системам Майкрософт
При включенных расширениях Майкрософт функции, первоначально объявленной без класса хранения (или с классом хранения extern), предоставляется класс хранения static, если определение этой функции находится в том же исходном файле и в нем явно указан класс хранения static.
При компиляции с параметром компилятора /Ze функции, объявленные в блоке с помощью extern ключевого слова, имеют глобальную видимость, которая не имеет значения true при компиляции с помощью /Za. Эта функция не должна полагаться на то, если переносимость исходного кода является соображением.
Завершение блока, относящегося только к системам Майкрософт