Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
1

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

17.12.2013, 01:51. Показов 2354. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброй ночи всем!
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте. У меня есть один файл, например, для ввода данных, а другой из обрабатывает и 3 - главный, в котором собраны все вызывающиеся функции.
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные. подключив данный файл только к одному файлу, компилятор не ругается, но в других фалах обрабатывать полученные данные невозможно.
Есть ли вариант, как организовать это дело? Или может лучше сделать ввод всех локальных данных в главном файле, и передавать их в параметрах вызываемых функций?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2013, 01:51
Ответы с готовыми решениями:

Объявление глобальных переменных
#include "stdafx.h" #include <conio.h> #include <stdio.h> void main (int x, int y) {...

Как избавиться от глобальных переменных в многофайловом проекте на С++?
Некоторые глобальные переменные можно заменить на глобальные константы. Долго промучилась с...

Объявление глобальных в контексте приложения переменных
Создаю проект в vc++ 2010. Прога содержит множество форм, в которых производятся манипуляции с БД...

Объявление глобальных переменных для всего проекта
Подскажите как объявить переменные, так чтобы они были глобальными для всего проекта, т.е. для всех...

19
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:03 2
Цитата Сообщение от olea Посмотреть сообщение
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте.
Объявите их в каком-либо .cpp файле. В других файлах, там где нужны, объявите их как extern.
0
390 / 365 / 111
Регистрация: 03.02.2013
Сообщений: 1,120
17.12.2013, 03:07 3
Объявите их в каком-либо .cpp файле
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
сложнее - static-переменная
ещё сложнее - extern-переменная
в cpp такие вещи точно не стоит пихать
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:12 4
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
К нескольким .cpp? Что ТС и сделала
Цитата Сообщение от olea Посмотреть сообщение
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные.
0
390 / 365 / 111
Регистрация: 03.02.2013
Сообщений: 1,120
17.12.2013, 03:15 5
ответ на вопрос автора
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:18 6
Это совет для кого?
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
0
390 / 365 / 111
Регистрация: 03.02.2013
Сообщений: 1,120
17.12.2013, 03:22 7
Цитата Сообщение от alsav22 Посмотреть сообщение
Это совет для кого?
домохозяйкам на заметку
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:24 8
Цитата Сообщение от abit Посмотреть сообщение
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
Есть. Неименованное пространство имён.
0
390 / 365 / 111
Регистрация: 03.02.2013
Сообщений: 1,120
17.12.2013, 03:35 9
Цитата Сообщение от alsav22 Посмотреть сообщение
Есть. Неименованное пространство имён.
Ещё скажите что вы этим пользуетесь, у меня сейчас скажем проект, где пара клиент-сервер неазависимо живёт, не приложу ума как сделать им неименованное пространство имён, да даже сам термин "неименованнное пространство имён" звучит странно, не находите?
0
alsav22
17.12.2013, 03:49
  #10

Не по теме:

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

0
alsav22
17.12.2013, 04:09
  #11

Не по теме:

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

0
gray_fox
17.12.2013, 04:20
  #12

Не по теме:

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

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

Не по теме:

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

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

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

Добавлено через 40 минут
У "Л.Лафоре. ООП в С++" есть глава: "Многофайловые программы". Почитайте, возможно вопрос прояснится.
1
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
18.12.2013, 16:07  [ТС] 20
alsav22, спасибо большое за книгу. Разобралась. Все стало на свои места!
0
18.12.2013, 16:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2013, 16:07
Помогаю со студенческими работами здесь

Рассмотреть программу, написать имена глобальных переменных, локальных переменных, формальных параметров
Program P1; var s:string; procedure P(var s:string) ; var i, j : integer; ...

Объявление глобальных переменной в нескольких библеотеках
Доброго времени суток Имеется БД с несколькими библиотеками в которых много функций. Появилась...

О глобальных переменных
Народ всем привет! Я только начал программировать на Visual Basic 2005 express edition. Помогите с...

Поиск глобальных переменных
Есть задачка, которую не могу решить. Дано 9000 .cpp файлов, которые являют собой полноценные...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru