Спецификаторы классов хранения с объявлениями функций
В объявлениях функций можно использовать описатель класса хранения static
или extern
. Функции всегда имеют глобальное время существования.
Блок, относящийся только к системам Майкрософт
Объявления функций на внутреннем уровне имеют то же значение, что и объявления функций на внешнем уровне. Это означает, что функция видна с момента объявления на протяжении всего времени существования записи преобразования, даже если она объявлена с локальной областью видимости.
Завершение блока, относящегося только к системам Майкрософт
Правила видимости для функций слегка отличаются от правил для переменных следующим.
Функция, объявленная как
static
, видна только в пределах исходного файла, в котором она определена. Функции в том же исходном файле могут вызывать функциюstatic
, но функции в других исходных файлах не могут получить прямой доступ к ней по имени. Можно объявить другую функциюstatic
с тем же именем в другом исходном файле, не создавая конфликта.Функции, объявленные как
extern
, видны во всех исходных файлах программы (если впоследствии такая функция не будет повторно объявлена какstatic
). Любая функция может вызывать функциюextern
.Объявления функций, опускающие описатель класса хранения, по умолчанию являются
extern
.
Блок, относящийся только к системам Майкрософт
В системах Майкрософт можно повторно определять идентификатор extern
как static
.
Завершение блока, относящегося только к системам Майкрософт