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

Объявление глобальных переменных в проекте Dev C++ - C++

Восстановить пароль Регистрация
 
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 01:51     Объявление глобальных переменных в проекте Dev C++ #1
Доброй ночи всем!
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте. У меня есть один файл, например, для ввода данных, а другой из обрабатывает и 3 - главный, в котором собраны все вызывающиеся функции.
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные. подключив данный файл только к одному файлу, компилятор не ругается, но в других фалах обрабатывать полученные данные невозможно.
Есть ли вариант, как организовать это дело? Или может лучше сделать ввод всех локальных данных в главном файле, и передавать их в параметрах вызываемых функций?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:03     Объявление глобальных переменных в проекте Dev C++ #2
Цитата Сообщение от olea Посмотреть сообщение
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте.
Объявите их в каком-либо .cpp файле. В других файлах, там где нужны, объявите их как extern.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
17.12.2013, 03:07     Объявление глобальных переменных в проекте Dev C++ #3
Объявите их в каком-либо .cpp файле
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
сложнее - static-переменная
ещё сложнее - extern-переменная
в cpp такие вещи точно не стоит пихать
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:12     Объявление глобальных переменных в проекте Dev C++ #4
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
К нескольким .cpp? Что ТС и сделала
Цитата Сообщение от olea Посмотреть сообщение
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
17.12.2013, 03:15     Объявление глобальных переменных в проекте Dev C++ #5
ответ на вопрос автора
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:18     Объявление глобальных переменных в проекте Dev C++ #6
Это совет для кого?
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
17.12.2013, 03:22     Объявление глобальных переменных в проекте Dev C++ #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Это совет для кого?
домохозяйкам на заметку
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:24     Объявление глобальных переменных в проекте Dev C++ #8
Цитата Сообщение от abit Посмотреть сообщение
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
Есть. Неименованное пространство имён.
abit
 Аватар для abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
17.12.2013, 03:35     Объявление глобальных переменных в проекте Dev C++ #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Есть. Неименованное пространство имён.
Ещё скажите что вы этим пользуетесь, у меня сейчас скажем проект, где пара клиент-сервер неазависимо живёт, не приложу ума как сделать им неименованное пространство имён, да даже сам термин "неименованнное пространство имён" звучит странно, не находите?
alsav22
17.12.2013, 03:49
  #10

Не по теме:

Цитата Сообщение от abit Посмотреть сообщение
да даже сам термин "неименованнное пространство имён" звучит странно, не находите?
Может только для вас?
С.Прата, по-видимому, так не считает.

alsav22
17.12.2013, 04:09
  #11

Не по теме:

Цитата Сообщение от abit Посмотреть сообщение
static-переменная, это идеал,
...

gray_fox
17.12.2013, 04:20
  #12

Не по теме:

Цитата Сообщение от abit Посмотреть сообщение
Ещё скажите что вы этим пользуетесь, у меня сейчас скажем проект, где пара клиент-сервер неазависимо живёт, не приложу ума как сделать им неименованное пространство имён, да даже сам термин "неименованнное пространство имён" звучит странно, не находите?
Тем не менее это считается более предпочтительным способом для internal linkage в С++, причём уже давно.

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 15:48     Объявление глобальных переменных в проекте Dev C++ #13
Цитата Сообщение от abit Посмотреть сообщение
сложнее - static-переменная
При чём здесь, вообще, statiс? Это сделает глобальные переменные видимыми в других файлах?
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:15  [ТС]     Объявление глобальных переменных в проекте Dev C++ #14
я попробовала static - не делает переменные видимыми и в других файлах. просто значение переменной сохраняется между вызовами функций.
в итоге решила все-таки отказаться от глобальных переменных - буду передавать переменные в функции по параметрам.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 22:17     Объявление глобальных переменных в проекте Dev C++ #15
Цитата Сообщение от olea Посмотреть сообщение
я попробовала static
А другое попробовать? Никак?
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:21  [ТС]     Объявление глобальных переменных в проекте Dev C++ #16
знаю, что использовать глобальные переменные не айс, поэтому и предпочла передачу по параметрам
alsav22
17.12.2013, 22:28
  #17

Не по теме:

Цитата Сообщение от olea Посмотреть сообщение
знаю, что использовать глобальные переменные не айс
В общем-то да, но чтобы знать как сделать, может когда понадобится.

olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:44  [ТС]     Объявление глобальных переменных в проекте Dev C++ #18
alsav22, попробовала, сделала с помощью extern, работает, но как правильно подключить файл data.h с описанием переменных - подключает только к одному файлй cpp, если к нескольким подключаю, то выдает ошибку
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.12.2013, 00:14     Объявление глобальных переменных в проекте Dev C++ #19
Цитата Сообщение от olea Посмотреть сообщение
попробовала, сделала с помощью extern
Как сделали? Файлы можете выложить? Трудно что-либо советовать вслепую...

Добавлено через 2 минуты
Цитата Сообщение от olea Посмотреть сообщение
файл data.h с описанием переменных - подключает только к одному файлй cpp, если к нескольким подключаю, то выдает ошибку
Нельзя делать объявления (они же определения) переменных в заголовочных файлах, которые подключаются к нескольким .cpp файлам.

Добавлено через 40 минут
У "Л.Лафоре. ООП в С++" есть глава: "Многофайловые программы". Почитайте, возможно вопрос прояснится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 16:07     Объявление глобальных переменных в проекте Dev C++
Еще ссылки по теме:

Массив (переписать без глобальных переменных) C++
C++ Описание глобальных переменных
C++ Ошибка в сравнении глобальных переменных в функциях

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

Или воспользуйтесь поиском по форуму:
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
18.12.2013, 16:07  [ТС]     Объявление глобальных переменных в проекте Dev C++ #20
alsav22, спасибо большое за книгу. Разобралась. Все стало на свои места!
Yandex
Объявления
18.12.2013, 16:07     Объявление глобальных переменных в проекте Dev C++
Ответ Создать тему
Опции темы

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