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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
#1

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

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

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

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:03 #2
Цитата Сообщение от olea Посмотреть сообщение
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте.
Объявите их в каком-либо .cpp файле. В других файлах, там где нужны, объявите их как extern.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
17.12.2013, 03:07 #3
Объявите их в каком-либо .cpp файле
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
сложнее - static-переменная
ещё сложнее - extern-переменная
в cpp такие вещи точно не стоит пихать
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:12 #4
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
К нескольким .cpp? Что ТС и сделала
Цитата Сообщение от olea Посмотреть сообщение
Сначала вынесла переменные в data.h и подключала ко всем файлам - компилятор ругается, мол, несколько раз декларирую переменные.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
17.12.2013, 03:15 #5
ответ на вопрос автора
Подскажите, пожалуйста, как правильно объявить глобальные переменные в проекте
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:18 #6
Это совет для кого?
Цитата Сообщение от abit Посмотреть сообщение
исключительно в h-файлах надо такие вещи делать
объявлять три способа:
самый простой - инклуд того h-файла
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
17.12.2013, 03:22 #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Это совет для кого?
домохозяйкам на заметку
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 03:24 #8
Цитата Сообщение от abit Посмотреть сообщение
static-переменная, это идеал, просто потому-что её можно поместить в нужный класс и не засорять пространство имён
есть варианты лучше?
Есть. Неименованное пространство имён.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 722
17.12.2013, 03:35 #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
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 15:48 #13
Цитата Сообщение от abit Посмотреть сообщение
сложнее - static-переменная
При чём здесь, вообще, statiс? Это сделает глобальные переменные видимыми в других файлах?
olea
5 / 5 / 1
Регистрация: 30.01.2012
Сообщений: 153
17.12.2013, 22:15  [ТС] #14
я попробовала static - не делает переменные видимыми и в других файлах. просто значение переменной сохраняется между вызовами функций.
в итоге решила все-таки отказаться от глобальных переменных - буду передавать переменные в функции по параметрам.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.12.2013, 22:17 #15
Цитата Сообщение от olea Посмотреть сообщение
я попробовала static
А другое попробовать? Никак?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 22:17
Привет! Вот еще темы с ответами:

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

Ошибка в сравнении глобальных переменных в функциях - C++
Здравствуйте! Я всю жизнь писал на Pascal и с С столкнулся впервые пару дней назад, когда начал эксперементировать с Arduino. Поискал...

Массив (переписать без глобальных переменных) - C++
Помогите написать ету програму без глобальных переменных #include <cstdlib> #include <iostream> using namespace std; ...

Исправить без использования глобальных переменных - C++
#include<iostream> using namespace std; int a,n,maximum=-1000,x; void zapros() { cout<<"Vvedite razmer massiva"<<endl; } ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
17.12.2013, 22:17
Ответ Создать тему
Опции темы

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