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

Оправдано ли использовать глобальные переменные и константы - C++

Восстановить пароль Регистрация
 
akarad
1 / 1 / 0
Регистрация: 06.01.2014
Сообщений: 6
06.01.2014, 02:49     Оправдано ли использовать глобальные переменные и константы #1
Здравствуйте, я бы хотел узнать немного об использовании глобальных переменных и констант.
Немало слышал и читал о том, что глобальные переменные использовать крайне не рекомендуется. Но как тогда быть, если функция должна работать с большим количеством значений и при этом почти все значения могут меняться в ней? Тогда список аргументов получается просто огромным. И что если таких функция должно быть несколько?
У меня возникла небольшая мысль, а что если все глобальные переменные засунуть в отдельный файл? Не знаю решит ли это проблему и как это вообще сделать, но не будет ли это тем же, что использовать глобальные переменные в main.cpp?
И что насчет использования глобальных констант? И можно ли их засунуть в отдельный файл?
Буду благодарен за ответы (желательно с хоть элементарным пояснением почему так, а не иначе).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.01.2014, 02:49     Оправдано ли использовать глобальные переменные и константы
Посмотрите здесь:

C++ Глобальные переменные
C++ глобальные переменные
Глобальные и статические глобальные переменные C++
C++ Глобальные переменные
Глобальные переменные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tdo22
10 / 10 / 1
Регистрация: 14.02.2013
Сообщений: 727
06.01.2014, 03:04     Оправдано ли использовать глобальные переменные и константы #2
ну не знаю, глобальные переменные используются крайне редко.
Если говорить об функции, то ей можно передать какой либо параметр.
Глобальные переменные/константы можно засунуть в отдельный файл, например в заголовочные файлы.
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
06.01.2014, 03:25     Оправдано ли использовать глобальные переменные и константы #3
akarad, в дополнение прочтите http://en.cppreference.com/w/cpp/language/constexpr , это можно сказать расширение нового стандарта.
__General__
24 / 24 / 3
Регистрация: 04.01.2014
Сообщений: 91
Завершенные тесты: 2
06.01.2014, 06:01     Оправдано ли использовать глобальные переменные и константы #4
akarad, Засовывать глобальные переменные в отдельный файл смысла я не вижу,
но вот если объявить глобальную переменную как static (static int a), то "жить" она будет только в том файле ,в котором была объявлена - это хоть безопаснее. Хотя да, лучше глобальные переменные вообще не использовать.

А вот глобальные константы юзать вполне себе безопасно

Добавлено через 5 минут
Ведь с глобальными переменными опасно иметь дело потому, что вы можете случайно изменить их значения в какой-нибудь функции, что приведет к неправильной работе программы;
а константу в принципе не изменишь.
Убежденный
Системный программист
 Аватар для Убежденный
14175 / 6190 / 982
Регистрация: 02.05.2013
Сообщений: 10,298
Завершенные тесты: 1
06.01.2014, 11:58     Оправдано ли использовать глобальные переменные и константы #5
Цитата Сообщение от akarad Посмотреть сообщение
Немало слышал и читал о том, что глобальные переменные использовать крайне не рекомендуется.
Да. Код с глобальными переменными труднее поддерживать, он подвержен ошибкам.

Цитата Сообщение от akarad Посмотреть сообщение
Но как тогда быть, если функция должна работать с большим количеством значений и при этом почти все значения могут меняться в ней? Тогда список аргументов получается просто огромным. И что если таких функция должно быть несколько?
Можно запихнуть значения в структуру и передать ее адрес, как аргумент.
Но вообще, функция с большим количеством аргументов - это само по себе подозрительно.

Цитата Сообщение от akarad Посмотреть сообщение
У меня возникла небольшая мысль, а что если все глобальные переменные засунуть в отдельный файл? Не знаю решит ли это проблему и как это вообще сделать, но не будет ли это тем же, что использовать глобальные переменные в main.cpp?
Скажем так, это немного сгладит проблему, но не решит ее.
Конечно, приятнее работать с глобальными переменными централизовано, а не
бегать за ними по сотне файлов. Кстати, глобальные переменные можно делать
static или помещать в анонимные пространства имен, тогда они будут видны
только в пределах файла.

Цитата Сообщение от akarad Посмотреть сообщение
И что насчет использования глобальных констант? И можно ли их засунуть в отдельный файл?
Можно. Только есть одна тонкость - глобальные константы имеют внутреннее
связывание (C++03, 3.5.3), поэтому для их "расшаривания" в другие cpp-файлы
необходимо добавлять extern к объявлению.
Yandex
Объявления
06.01.2014, 11:58     Оправдано ли использовать глобальные переменные и константы
Ответ Создать тему
Опции темы

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