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


Спецификаторы классов хранения с объявлениями функций

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

Блок, относящийся только к системам Майкрософт

Объявления функций на внутреннем уровне имеют то же значение, что и объявления функций на внешнем уровне. Это означает, что функция видна с момента объявления на протяжении всего времени существования записи преобразования, даже если она объявлена с локальной областью видимости.

Завершение блока, относящегося только к системам Майкрософт

Правила видимости для функций слегка отличаются от правил для переменных следующим.

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

  • Функции, объявленные как extern, видны во всех исходных файлах программы (если впоследствии такая функция не будет повторно объявлена как static). Любая функция может вызывать функцию extern.

  • Объявления функций, опускающие описатель класса хранения, по умолчанию являются extern.

Блок, относящийся только к системам Майкрософт

В системах Майкрософт можно повторно определять идентификатор extern как static.

Завершение блока, относящегося только к системам Майкрософт

См. также

Классы хранения в C