Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание файла с переменными, можно ли так сделать? 
:(
    Опции темы
PILOT
Дата 13.12.2004, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



Например, в моей задаче было очень удобно имена и объявления выносить в отдельный файл и приклеплять его ко всем файлам которые его используют (я так делал на ассемблере).

И вот, например, есть объединение, которое я бы хотел использовать в более чем одном файле:
Код

union RdUnion1
{
 char  RdReg;
 struct BitStr
 {
   unsigned X1:1;
   unsigned X2:1;  
   unsigned X3:1;
   unsigned X4:1;
   unsigned X5:1;
   unsigned X6:1;  
   unsigned X7:1;
   unsigned X8:1;
 } Bits;
} RdReg1;


Т.е. я бы хотел использовать не само объединение как тип, а именно переменную RdReg1, которая является как бы глобальной... не знаю терминологию. Т.е. видной изо всех файлов... так наверное.

СУВ.




--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Goldberg
Дата 13.12.2004, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 3.6.2004

Репутация: нет
Всего: нет



Ну так в чем проблемма? Объявлешь, и потом инклудишь во все хидеры.

#include "GlobalVariables.h"
--------------------
Вот такая у меня привычка, браться за задание, о выполнение которого я изначально не имею никакого представления.
PM MAIL ICQ   Вверх
srd
Дата 13.12.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Заголовочный файл my.h
Код

#ifndef __MY__
#define __MY__

union RdUnion1
{
 char  RdReg;
 struct BitStr
 {
   unsigned X1:1;
   unsigned X2:1;  
   unsigned X3:1;
   unsigned X4:1;
   unsigned X5:1;
   unsigned X6:1;  
   unsigned X7:1;
   unsigned X8:1;
 } Bits;
};

// объявляение глобальной переменной.
extern RdUnion1 RdReg1;

#endif

CPP файл my.cpp
Код

#include "my.h"
// определение глобальной переменной
RdUnion1 RdReg1;

После чего включаешь my.h во всех файлах, в которых тебе нужна переменная RdReg1. А просто определять глобальные переменные в заголовках разумеется нельзя.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
PILOT
Дата 13.12.2004, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



Т.е. одна переменная на все файлы? с одним и тем же адресом?
И обращаясь затем в любом модуле:
Код

/*** любой файл, например: my2.cpp ***/
#include "my.h"
// определение глобальной переменной
RdUnion1 RdReg1;
...
...

RdReg1=0x10;

я буду обращаться именно к одной и той же которая описана в my.h?
и обязательно нужно будет указать в 3-х местах о RdReg1? (my.h, my.cpp, my2.cpp)

СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
srd
Дата 13.12.2004, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Нет, переменная определяется только один раз только в одном CPP файле. А в других CPP-файлах она становится доступной благодаря строчке
Код

extern RdUnion1 RdReg1;

которая содержится в my.h

my.h
Код

#ifndef __MY__
#define __MY__

union RdUnion1
{
 char  RdReg;
 struct BitStr
 {
   unsigned X1:1;
   unsigned X2:1;  
   unsigned X3:1;
   unsigned X4:1;
   unsigned X5:1;
   unsigned X6:1;  
   unsigned X7:1;
   unsigned X8:1;
 } Bits;
};

// объявляение глобальной переменной.
extern RdUnion1 RdReg1;

#endif

my.cpp
Код

#include "my.h"
RdUnion1 RdReg1;

my2.cpp
Код

#include "my.h"
void f(void)
{
  RdReg1 = 0;
}

my3.cpp
Код

#include "my.h"
void g(void)
{
 RdReg1 = 1;
}

и т.п.


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
PILOT
Дата 13.12.2004, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



Эх...
Жаль что в одном месте нельзя сразу все указать...
хидер и его срр становяться неуниверсальными в моем случае...

У меня есть классы. Т.е. если я захотел внести изменение в название класса придется менять все в трех местах, в т.ч. и файлах объявления классов...
А по другому никак нельзя?

Вот в асме было так: в одном месте объявляешь как public и везде использувешь...

СУВ.



--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.