2014-01-30 4 views
1

Что правильно говорить о глобальной переменной:глобальный масштаб против области файла

Если он объявлен без static ключевого слова:

  1. Он имеет file scope и external linkage ИЛИ
  2. Он имеет program scope и виден ко всем файлам в программе

Если объявлено static ключевое слово:

  1. Он имеет global scopeinternal linkage и ИЛИ
  2. Он file scope и internal linkage

И как глобальная область видимости пространства имен, связанные с этим?

Эти понятия действительно путают, я думаю, что я понимаю, как это работает, но в разных местах они называют это по-разному, поэтому я не знаю, что правильно.

ответ

1

Ответы на первый вопрос неверны.

Переменная будет иметь надводную связь действительно, но будет видна в других программных единицах, только если она объявлена ​​в ней.

Что касается второго вопроса, то действительно переменная будет иметь объем файла и внутреннюю связь.

Любая переменная, объявленная вне некоторого явно заданного пространства имен, считается объявленной в глобальном пространстве имен. Variavles с внешней или внутренней связью могут быть объявлены в любом пространстве имен, включая глобальное пространство имен.

Мы говорим о переменных, объявленных вне любой функции.

+0

Для первого вопроса, первый ответ: я имею в виду, что он имеет область видимости файла 'but', которая может быть« отнесена »от другой единицы перевода, объявив ее« extern ». Поэтому возникает путаница при использовании понятий файловой и глобальной сферы. Правильно ли указывать область файла и внешнюю связь или глобальную область действия, и если мы хотим ссылаться на нее из другой единицы перевода, мы объявляем ее, чтобы мы могли ее использовать? – LearningMath

+0

Можно сказать, что переменная имеет глобальную область видимости. Но в то же время он может быть объявлен в любом пространстве имен, –

Смежные вопросы