Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Глобальные переменные


Автор: Zealot 29.10.2005, 09:16
Народ!
Проблема такая:

есть модуль, в нём написано:
Код

int X;


в другом модуле написано:
Код

void ChangeX(int A)
{
  X = A;
}


Компиляю, запускаю - X не меняется!
Смотрю Debug'ером:
В пределах процедуры ChangeX X меняется, а глобально - нет! Хотя в дельфях всё работает, как часы! Кто знает, что с этим делать? smile

Заранее, спасибо!

Автор: Kowal 29.10.2005, 10:51
Допиши к определению переменной слово extern

Код

extern int X;

Автор: BreakPointMAN 29.10.2005, 10:56
смотри в сторону спецификатора extern

Автор: Zealot 29.10.2005, 11:29
Так, если я правильно понял, то объявляем переменную так:
Код

extern int X;

Но компилятор на этапе линковки выдаёт ошибку!

если же сделать так:
Код

//first.h
int X;

Код

//second.cpp
extern X;
void ChangeX(int Y)
{
  X = Y;
}


то глобальная переменная меняется.
Но если есть третий модуль, то
Код

//third.cpp
void DoIt(void)
{
int t;
  t = X;
}


то переменная t = 0!

Как быть в этом случае?



-----------------------------------------------------
По ушам бьёт "Пилигрим", "Девятый вал"

Автор: _hunter 29.10.2005, 15:49
в заголовке пишеш extern int X;
в .cpp int X = 1;
и больше нигде ничего писать не нужно ( просто не забудь заколовки приинклудить )

Автор: Zealot 29.10.2005, 17:49
ОГРОМНОЕ СПАСИБО, _hunter!

Теперь всё заработало!

Ты спас мой проект!

smile smile smile smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)