![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Fedor |
|
||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Собственно, код в файле main.h:
Линковщик ругается:
Что я не правильно делаю? Мож структ неправильно оформил? Или extern неправильно что-то? Хелп плиз... -------------------- Мы - Днепряне. Мы всех сильней. |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
extern указывать не нужно т.к. с extern компилятор считает что объявление находится где-то еще и не может его найти
а вот в том ( другом ) файле где ты используеш эту структуру нужно писать extern _AllPropertiesType AllProperties; (без объявления самого типа ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Fedor |
|
||||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Убрал extern.
Тут возникает другая ошибка: при линковке выдается ворнинг:
Юниты связаны: в обоих файлах *.h прописаны #include на другой файл: в main.h: #include "f_add.h" в f_add.h: #include "main.h" Когда я в юните F_Add.cpp делаю трейс на присваивании:
До выполнения команды AllProperties.path=NULL, Edit1->Text="a" После выполнения команды ничего не изменяется. Если подобные присваивания делаются в юните main.cpp, то такого не происходит... -------------------- Мы - Днепряне. Мы всех сильней. |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
у тебя в f_add.h точно только extern _AllPropertiesType AllProperties; написанно?
(без объявления _AllPropertiesType ) потому как компилятор предупреждает не о переменной -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Да. Извини. Не было написано.
НО: теперь не компилится - ругается на обе строчки _AllPropertiesType AllProperties; и extern _AllPropertiesType AllProperties; в модулях и выдает ошибки Declaration syntax error -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Вот это должно скомпилиться:
-------------------- ![]() |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
ты часом не перепутал местами объявления?
приведи куски кода из обоих файлов -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Fedor |
|
|||
![]() Днепрянин ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2090 Регистрация: 8.2.2003 Где: Великий Репутация: нет Всего: 32 |
Сенкс. Вариант mr.DUDA работает. И вроде все-таки понял, как объявлять глобальные переменные в C++
Плюс один обоим за помощь -------------------- Мы - Днепряне. Мы всех сильней. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
_hunter, есть простое правило для объявления глобальных переменных: если необходимо в одном или нескольких .cpp-файлах использовать одну глоб. переменную, то ко всем ним подключается один заголовочный файл, содержащий extern-объявление этой переменной, и в любом .cpp-файле эта же переменная объявляется без модификатора extern (т.е. фактически компилятор будет вставлять в нужные места .cpp-файлов "ссылку времени компиляции" на переменную, а линковщик свяжет созданные OBJ-файлы с тем объектным файлом, на который указывает эта "ссылка").
-------------------- ![]() |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |