Поделиться через


Спецификаторы статических классов хранения

Статические спецификаторы класса хранения static и extern можно применять для объектов и функций. В следующей таблице показано, где можно использовать ключевые слова static и extern и где невозможно.

Использование ключевых слов static и extern

Конструкция

Можно ли использовать

ключевое слово static?

Можно ли использовать

ключевое слово static?

Объявления функций в блоке

Нет

Да

Формальные аргументы для функции

Нет

Нет

Объекты в блоке

Да

Да

Объекты вне блока

Да

Да

Функции

Да

Да

Функции-члены класса

Да

Нет

Данные членов класса

Да

Нет

Имена typedef

Нет

Нет

Имя, заданное с помощью ключевого слова static, имеет внутреннюю компоновку, за исключением статических членов класса с внутренней компоновкой. То есть оно невидимо за пределами текущей записи преобразования. Имя, заданное с помощью ключевого слова extern, имеет внешнюю компоновку, если ранее не определено как имя с внутренней компоновкой. Дополнительные сведения о видимости имен см. в разделах Область и Программа и компоновка.

Примечание

Функции, объявленные как inline и не являющиеся функциями-членами класса, получают те же характеристики компоновки, что и функции, объявленные как static.

Имя класса, объявление которого еще не обнаружено компилятором, можно использовать в объявлении extern. Имя, введенное с таким объявлением, невозможно использовать до тех пор, пока не будет обнаружено объявление класса.

См. также

Ссылки

Спецификаторы классов хранения