![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Разбил программу на несколько исходных файлов с одним заголовочным файлом - не хочет компилироваться:
snake.h:
Вся программы в прикреплённом архиве Присоединённый файл ( Кол-во скачиваний: 5 )
snake.tar.gz 30,39 Kb |
||||
|
|||||
| Void |
|
||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 40 Всего: 173 |
powerfox
В snake.h:
В любом cpp-файле:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||
|
|||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Спасибо, Void!
А почему нельзя их сделать глобальными и определить в snake.h? Кстати, а snake.h ведь не надо компилировать? |
|||
|
||||
| srd |
|
|||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Они и так глобальные. Все объекты должны определяться только один раз. Грубо говоря, препроцессор просто вставляет вместо директивы #include текст соответствующего заголовочного файла, а с получившейся единицей трансляции работает уже компилятор, и компилятор с каждой единицей работает отдельно, не делая никаких предположений о других модулях, даже не подозревая об их существовании. Когда ты пишешь определение переменных в заголовочном файле (int xpos = 0, ypos = 0), то фактически компилятор определяет эти переменные в каждом модуле, включающем этот заголовочный файл. Это очень расстраивает компоновщик (как в твоём примере). extern int x - это не определние, а объявление переменной. С помощью такой инструкции ты информируешь компилятор, что у тебя где-то существует объект с таким-то именем и таким-то типом (ты его должен определить в любом cpp файле один раз). И компилятор генерирует правильный код для использования объекта, не зная его адреса (так наз. "заглушки"). Потом компоновщик находит объект и записывает правильный адрес. -------------------- Не смей читать мою подпись!!! |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 2 Всего: 97 |
Спасибо! Тогда надо ещё и поменять *bg, *image, *screen.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |