Форум программистов, компьютерный форум CyberForum.ru

Константные глобальные переменные - константные ли? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5656 / 3135 / 356
Регистрация: 29.11.2010
Сообщений: 8,397
18.01.2014, 21:45     Константные глобальные переменные - константные ли? #1
Сейчас вспомнил один момент, который остался неразрешенной для меня загадкой. Случилось это более года назад. Пытался устроиться на стажировку в Яндекс. Дали 3 задания, последнее требовало из 10000 исходников на С++ любыми средствами вытащить список глобальных переменных. При этом, в примере что они предоставили, глобальные константы за оные не считаются.

Переписка:
Здравствуйте, ув. XXX!
У меня есть вопрос относительно задачи С. В ней необходимо вывести список глобальных переменных. В примере почему-то пропущена глобальная переменная с модификатором const. Это намеренный пропуск (т.е. переменные с const следует не считать) или же опечатка?
Спасибо за внимание.
Константы не счиаем глобальными.
Я знаю, что gcc при связывании константы как глобальные переменные не отмечает. Но имеем ли мы право так рассуждать, основываясь лишь на чисто технической реализации компилятора?

К сожалению, авторитетных источников информации по этому поводу не нашел (видимо плохо искал).

Не по теме:

Да, они хотели парсер выхлопа gcc



Добавлено через 1 час 21 минуту
С позволения Убежденный (из ЛС)
В стандарте C++03, в разделе 3.5 "Program and linkage", сказано:
3. A name having namespace scope (3.3.5) has internal linkage if it is the name of

- an object, reference, function or function template that is explicitly declaredstaticor,

- an object or reference that is explicitly declared const and neither explicitly declared
extern nor previously declared to have external linkage
; or

- a data member of an anonymous union.
То есть, такое поведение - не просто особенность технической реализации
компилятора, оно подразумевается стандартом языка.
На всякий случай приведу тот же пункт из С++11:
A name having namespace scope (3.3.6) has internal linkage if it is the name of
— a variable, function or function template that is explicitly declared static; or,
a variable that is explicitly declared const or constexpr and neither explicitly declared extern nor
previously declared to have external linkage
; or
— a data member of an anonymous union.
То есть то же + constrexpr.
Спасибо ему за ответ.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2014, 21:45     Константные глобальные переменные - константные ли?
Посмотрите здесь:

Константные объекты C++
C++ Константные статические объекты класса.
C++ Константные функции-члены ?
C++ Константные поля и методы
Константные поля класса C++
Константные методы и объекты класса C++
C++ Builder Константные функции
Константные функции-члены C++
C++ Дублирование кода и константные методы
Константные и не константные ссылки. Приведения типов. Нужно уточнение C++
Константные аргументы классов C++
Константные функции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему

Метки
глобальные, константы
Опции темы

Текущее время: 15:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru