Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Структура |
Автор: Belous 6.2.2017, 20:09 | ||||||
Есть переменные, которые определены глобально и видны из всех функций. Все работает. При попытке создать таким же образом структуру возникает ошибка, что она не видна error C2501: 'data' : missing storage-class or type specifiers А если добавляю определение в этот модуль, то получаеся переменная не глобольной структуры, а локальной структуры, с таким же именем см рисунок DATA глобальная и DATA локальная.
Как создать массив глобальных переменных типа структура? |
Автор: ss 6.2.2017, 21:15 |
в Data.h надо подключить Project.h. Файл в котором описана структура не подключен. Структуру нужно вынести в другой файл иначе будет кольцевое подключение. |
Автор: Belous 6.2.2017, 21:24 | ||
Вот именно. Поэтому и не подключен. А иначе никак ? А то и так этих файлов очень много получается, и это только начало программы... Спасибо, попробую. |
Автор: ss 6.2.2017, 22:11 |
в Data.h опиши структуру, заведи массив а в других файлах (Project.h) подключай этот Data.h и определяй ссылку extern DATA data[10]; |
Автор: Belous 6.2.2017, 23:07 |
В общем смысл я понял. У меня было в Project.h описаны все глобальные переменные в Project.cpp - WinMain() и WndProc() В остальных файлах-модулях, по смыслу File.h + File.cpp - работа с файлами, В Data.h + Data.cpp - работа с данными, инициализация, проверки, undo, redo и т.д. Естественно все так или иначе вызывается с WndProc() Так просто перенести переменные из Project.h в Data.h не получится, поскольку функции модуля Data.cpp вызываются из Project.cpp. и все равно получается error C2011: 'DATA' : 'struct' type redefinition немного спасает #pragma once но получил Project.obj : error LNK2005: "struct DATA * e::data" (?data@e@@3PAUDATA@@A) already defined in Data.obj ... Наверное без дополнительного файла под структуру не обойтись. |
Автор: xvr 7.2.2017, 11:29 | ||||||||
У вас в принципе неправильная структура файлов. Должно быть так:
|
Автор: Belous 7.2.2017, 21:04 |
Спасибо |