Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Глобальные переменные  (Прочитано 12821 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Vorlon
Гость
« : 29-11-2003 09:33 » 

Есть такая тупая проблема:

VC6.0, необходимо объявить глобальную переменную для всего проекта.
Если я объявляю в "Header" - файле и подключаю его к нескольким "Source" - файлам, выдается такая ошибка:

Linking...
ProjectName.obj : error LNK2005: "Такая-то переменная" already defined in "Такой-то файл проекта".obj

Если объявляю только в файле с указанием "Defines the entry point for the application.", такая ерунда:

Compiling...
"Такой-то файл проекта"
"Такой-то файл проекта"(..) : error C2065: 'Такая-то переменная' : undeclared identifier

Может подскажите, что не так делаю.
Записан
Sommer
Молодой специалист

us
Offline Offline

« Ответ #1 : 29-11-2003 09:46 » 

Vorlon,
а пробовал удалять все из debug?
Записан

когда-нибудь, я верю, ты будешь ехать по этому городу и поймёшь, что хочешь увидеть меня за рулём мчащейся по соседней полосе машины.
но тогда меня уже не будет
в этом городе
forever yours.
baldr
Команда клуба

ru
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #2 : 29-11-2003 09:58 » 

Объяви ее в файле stdafx.h и проверь, что он подключен ко всем файлам проекта.
Если уж будет опять возникать, то просто в каждом модуле укажи
extern описаниепеременной;
В принципе, файл stdafx.h специально для таких целей - определения глобальных объектов - и предназначен...
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
Migmile
Помогающий

ru
Offline Offline

« Ответ #3 : 29-11-2003 10:09 » 

Я прозволю себе напомнить, что глобальные переменные лучше всего описывать в header-ом файле как
extern int GlobVar;
и только в одном файле проекта описать как
int GlobVar;

Затем header-ный файл включается во все файлы *.cpp где требуется доступ к этой переменной.
PS Инициализация этой переменное должна иметь место только в том файле, где она НЕ описана как extern
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 29-11-2003 10:50 » 

Кстати, граждане, повторяемся - не далее чем недели две-три назад был такой же вопрос: https://forum.shelek.ru/index.php/topic,1524.0.html
Иногда надо и поиском пользоваться.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Vorlon
Гость
« Ответ #5 : 29-11-2003 11:01 » 

Прошу извинить за повтор, в следующий раз буду искать.

extern в header-файле и обычная инициализация в одном из файлов проекта помогла, все работает!
Благодарю за столь быстрые ответы.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines