Доступность переменных - PullRequest
       12

Доступность переменных

0 голосов
/ 25 августа 2010

HI,

У меня есть небольшое сомнение в отношении доступности переменных.

int i; //default the linkage is external
const int i; //default linkage is internal
extern int i; //explicitly assigning linkage as external



class a
    {
        int l;  //Default linkage is external
        void f() 
        {
          int k; //default linkage is external
        }
    }

эта ссылка говорит, что стандартная связь является внешней для неконстантных символов истатический (внутренний) для константных символов.

как насчет int i это доступно в другом файле без внешнего ключевого слова?как насчет переменной, присутствующей внутри класса и функций?

Как получить доступ к функции, присутствующей в анонимном пространстве имен, и какую связь они имеют?

namespace //members of anonymous namespace
{
 class C{};
 int x;
 }

Ответы [ 2 ]

1 голос
/ 25 августа 2010

int i; имеет внешнюю связь и находится в обычном пространстве имен, поэтому оно доступно из других файлов.Они должны будут объявить его extern int i; в том же пространстве имен (в нашем случае это глобальное пространство имен), чтобы получить к нему доступ.

Члены безымянного пространства имен не доступны из других файлов - это цель пространства имен,Хотя они могут иметь внешнюю связь, их пространство имен уникально для текущего файла, поэтому одни и те же объявления в другом файле будут ссылаться на разные вещи, уникальные для этого файла.

0 голосов
/ 25 августа 2010

См. здесь

Имена в безымянном пространстве имен имеют внутреннюю связь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...