Имеет ли константная ссылка внешнюю связь в C++?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Имеет ли константная ссылка внешнюю связь в C++?

Сообщение Anonymous »

Согласно п. 3 раздела 3.5 стандарта C++ 1998, константная ссылка имеет внутреннюю связь.

Имя, имеющее область пространства имен (3.3.5) имеет внутреннюю связь, если это имя

[*]объекта, ссылки, функции или шаблона функции, которые явно объявлены статическим или,

[*]объект или ссылка, которая явно объявлена ​​как const и не объявлена ​​явно как extern и ранее не объявлена ​​как имеющая внешнюю связь; или

[*]член данных анонимного союза.



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

Код: Выделить всё

// a.cpp
const int& a = 1;

int main()
{
return 0;
}

// b.cpp
const int& a = 1;
А затем скомпилируйте код.

Код: Выделить всё

$ g++ a.cpp b.cpp
/tmp/ccb5Qi0M.o:(.bss+0x0): multiple definition of `a'
/tmp/ccD9vrzP.o:(.bss+0x0): first defined here
collect2: error: ld returned 1 exit status
Если ссылка const изменена на const, следующим образом:

Код: Выделить всё

// a.cpp
const int a = 1;

int main()
{
return 0;
}

// b.cpp
const int a = 1;
Компилируется нормально.

Подробнее здесь: https://stackoverflow.com/questions/227 ... nkage-in-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»