Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
olea
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
1

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

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

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

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

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

Определение глобальных переменных
Доброго времени суток! Интересует следующий вопрос - Возможно ли определение...

Описание глобальных переменных
помогите, плиз, с такой незадачей.. в каком из файлов нужно обозначить...

Инициализация глобальных переменных
Требуется инициализировать 2 массива и 2 переменные, которые используются в 2-х...

19
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:03 2
Цитата Сообщение от olea Посмотреть сообщение
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте.
Объявите их в каком-либо .cpp файле. В других файлах, там где нужны, объявите их как extern.
0
abit
273 / 272 / 83
Регистрация: 03.02.2013
Сообщений: 774
17.12.2013, 03:07 3
Объявите их в каком-либо .cpp файле
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
сложнее - static-переменная
ещё сложнее - extern-переменная
в cpp такие вещи точно не стоит пихать
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:12 4
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
К нескольким .cpp? Что ТС и сделала
Цитата Сообщение от olea Посмотреть сообщение
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные.
0
abit
273 / 272 / 83
Регистрация: 03.02.2013
Сообщений: 774
17.12.2013, 03:15 5
ответ на вопрос автора
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:18 6
Это совет для кого?
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
0
abit
273 / 272 / 83
Регистрация: 03.02.2013
Сообщений: 774
17.12.2013, 03:22 7
Цитата Сообщение от alsav22 Посмотреть сообщение
Это совет для кого?
домохозяйкам на заметку
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:24 8
Цитата Сообщение от abit Посмотреть сообщение
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
Есть. Неименованное пространство имён.
0
abit
273 / 272 / 83
Регистрация: 03.02.2013
Сообщений: 774
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
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 15:48 13
Цитата Сообщение от abit Посмотреть сообщение
сложнее - static-переменная
При чём здесь, вообще, statiс? Это сделает глобальные переменные видимыми в других файлах?
0
olea
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:15  [ТС] 14
я попробовала static - не делает переменные видимыми и в других файлах. просто значение переменной сохраняется между вызовами функций.
в итоге решила все-таки отказаться от глобальных переменных - буду передавать переменные в функции по параметрам.
0
alsav22
5450 / 4845 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 22:17 15
Цитата Сообщение от olea Посмотреть сообщение
я попробовала static
А другое попробовать? Никак?
0
olea
5 / 5 / 2
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:21  [ТС] 16
знаю, что использовать глобальные переменные не айс, поэтому и предпочла передачу по параметрам
0
alsav22
17.12.2013, 22:28
  #17

Не по теме:

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

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

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

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

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

Использование глобальных переменных - моветон ли?
Ребят, очень часто вижу как отцы С++, когда проверяют чей-то код и обнаруживают...

Вынос глобальных переменных в отдельный файл
Всем привет! Вопрос такой - сижу разбираюсь с вынесением функций в отдельные...


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

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

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