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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 5.00
MrGluck
Модератор
Эксперт CЭксперт С++
7209 / 4375 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
#1

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

18.01.2014, 21:45. Просмотров 2728. Ответов 0

Сейчас вспомнил один момент, который остался неразрешенной для меня загадкой. Случилось это более года назад. Пытался устроиться на стажировку в Яндекс. Дали 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++ Builder
Здравствуйте. У меня с Builder'ом 6.0 возникло недопонимание в следующем моменте. Я всю жизнь считала, что неконстантную функцию нельзя...

Константные массивы как члены класса и ошибка Call of nonfunction - C++ Builder
Здравствуйте. Я по двум связанным вопросам. 1) Требуется объявить константный массив как член класса. По статейки с форума rsdn (не...

Глобальные переменные - C++ Builder
Как объявить переменную и константу, чтобы они были видны во всех модулях проекта? Спасибо!

Глобальные переменные - C++ Builder
Зравствуйте, уважаемые форумчане! Нужна квалифицированная помощь Взгляните на код. Переменная raznica обьявлена глобально на форме и...

Глобальные переменные - C++ Builder
Как в C++ описывать глобальные переменные(чтоб к одной и то й же переменной можно было обращаться из разных юнитов) ? Если можно...

глобальные переменные - C++ Builder
Уважаемые коллеги! Встал в тупик, пытаясь организовать связь двух модулей через глобальную переменную. Создаю 3 файла: "common.h" ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 21:45
Привет! Вот еще темы с ответами:

Глобальные переменные на несколько форм - C++ Builder
Пишу в билдере 2009. Такая проблема. Не получается создать глобальные переменные, чтобы они были доступны в нескольких формах, допустим в...

Во фреймах обнуляются глобальные переменные - C++ Builder
Существует форма и фрейм на ней. В заголовочном файле формы существует глобальная переменная, которая хранит какое-то значение (не равное...

Как объявлять глобальные переменные? - C++ Builder
Нужно создать переменную "Х" задать ей тип, и потом изменять значение из любой формы. Чтобы был доступ к этому значению... и чтобы после...

Глобальные переменные - Visual C++
Всем доброго времени суток! Пишу програмку на VC++ 2008 со следующей структурой исходного кода: В филтре (папке) "Заголовочные...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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