Есть глобальные переменные в C static
или extern
по умолчанию?
Если глобальные переменные по умолчанию статичны, то это означает, что мы сможем получить к ним доступ в одном файле, но мы также можем использовать глобальные переменные в разных файлах.
Означает ли это, что они имеют внешнее хранилище по умолчанию?глобальная переменная в C статична или нет?
ответ
Если вы не указали класс хранения (то есть ключевые слова extern
или static
), то по умолчанию глобальные переменные имеют внешнюю связь. От стандарта C99:
§6.2.2 Взаимосвязи идентификаторов
3) Если декларация из идентификатора области видимости файла для объекта или функции содержит хранения класса спецификатор
static
, идентификатор имеет внутреннюю связь.5) Если декларация идентификатора для функции не имеет спецификатора класса хранения, ее привязка определяется точно так, как если бы она была объявлена спецификатором класса хранения
extern
. Если объявление идентификатора для объекта имеет область действия файла и спецификатор класса хранения, его связь является внешней.
Таким образом, даже если вы не указали extern
ключевое слово, Глобалы могут быть доступны с помощью других исходных файлов (так называемые единицы перевода), потому что они все еще могут иметь extern
декларацию для одной и той же переменной. Если вы используете ключевое слово static
, чтобы указать внутреннюю привязку, то даже при наличии объявления extern
для одного и того же имени переменной в другом исходном файле оно будет ссылаться на другую переменную.
В C, глобальная переменная, которая не имеет инициализатора или любой класс хранения спецификаторов является предварительное определение переменной с статической продолжительности хранения и внешней связи.
В блоке трансляции все предварительные определения и до одного необязательного определения (например, из объявления с инициализатором) сворачиваются в одно определение переменной. Хотя не допускается определение одной и той же переменной в нескольких единицах перевода, это общее расширение, позволяющее «распространенным» переменным, то есть предварительным определениям одной и той же переменной в нескольких единицах перевода.
Глобальные переменные в C по умолчанию являются экстерном .. (то есть) у них есть внешняя связь ..
Чтобы ограничить внешнее связывание, «статический» класс хранения спецификатор может быть использован для глобальной переменной .. если статический спецификатор используется, то переменная сфера файл .. Вы не можете связать его в другой файл, используя «Экстерн» ключевое слово ..
Указание «статического» зависит от вашего использования программы ..
- 1. Глобальная переменная в c
- 2. Глобальная переменная Object C
- 3. Глобальная переменная в C#
- 4. Глобальная переменная в C++
- 5. Модифицируемая глобальная переменная C++
- 6. Глобальная переменная маршала в C#
- 7. Oracle Глобальная константа или переменная?
- 8. C# Глобальная переменная страницы
- 9. Objective C Глобальная переменная
- 10. глобальная переменная V.S. переменная файла в C++
- 11. «Глобальная переменная» в Visual C#
- 12. Глобальная переменная массив в C
- 13. глобальная переменная в ASPX C#
- 14. Глобальная переменная определения в C
- 15. Локальная переменная или статическая переменная или глобальная переменная
- 16. C - статическая переменная маскирования глобальная переменная
- 17. C++: глобальная переменная как указатель
- 18. глобальная переменная в MySQL
- 19. PAWN to C++ глобальная переменная
- 20. C++ Глобальная переменная и функция
- 21. Глобальная переменная в Tcl
- 22. «Глобальная переменная» в Symfony2
- 23. Глобальная переменная в iOS
- 24. Глобальная переменная в Silverlight?
- 25. Переменная глобальная переменная?
- 26. Статическая глобальная переменная в Obj-C?
- 27. Глобальная переменная класса против указателя в C++
- 28. В быстром, глобальная переменная или свойство?
- 29. Глобальная переменная (или альтернатива) в .NET.
- 30. глобальная переменная для вложенной функции в C++
также имеет отношение : раздел 6.9.2, в котором описываются предварительные определения; В § 4 этого раздела явно показано, как взаимодействуют несколько определений переменных области видимости файла – Christoph
Thanx sir ........ Не могли бы вы объяснить, что такое «статический внешний varx»? – Mishthi
@ Мишти: Вы имеете в виду переменную, статичную и внешнюю? Боюсь, это невозможно. –