![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
Вообщем компилятор пишет
pacman.o (.bss+0x0) : multiple definition of sc main.o (.bss+0x0) : first definition here main.o Он вообще о чём? Какие ещё множественные объявления. И так пишет на любую попытку объявления глобальной переменной в pacman.h pacman.h Код:
pacman.cpp Код:
Код:
|
![]() |
![]() |
![]() |
#2 |
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]()
2jojahti
гениально. в pacman.h пиши extern MyScene *sc; , а в pacman.cpp - MyScene *sc; (т.е наоборот)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
![]() |
![]() |
![]() |
#3 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
pproger
Крута. Теперь компилится. Эээээ... А почему наоборот? И почему до этого ругалось? |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Потому что pacman.h включён и в pacman.cpp и в main.cpp, то есть объявление переменной происходило два раза...
|
![]() |
![]() |
![]() |
#5 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
Ну так заголовочный файл по идее и должен включаться в два.
Тоесть определение два раза происходило, ааа, теперь ясно. Крута, теперь у меня сегментатион фаулт. |
![]() |
![]() |
![]() |
#6 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
Всё это круто, но с константами что мне делать?
|
![]() |
![]() |
![]() |
#7 | ||
C++ hater
Старожил
Регистрация: 19.07.2009
Сообщений: 3,333
|
![]() Цитата:
Цитата:
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
||
![]() |
![]() |
![]() |
#8 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Объявляйте их со спецификатором extern.
pacman.cpp Код:
Код:
Код:
Последний раз редактировалось netrino; 20.08.2009 в 16:47. |
![]() |
![]() |
![]() |
#9 | ||
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
![]()
jojahti
Цитата:
netrino Цитата:
Тогда я не вполне понял что такое определение и объявление. Ведь если с префиксом экстерн обычной переменной присвоить что-то. Опять будет мультипле дефинитион. |
||
![]() |
![]() |
![]() |
#10 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Ну, обычные переменные по умолчанию разрешены к использованию в других модулях, в то время как константы нет. Потому константы надо явно определять как extern
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Qbasic ошибка "duplicate definition" | Костя КС | Помощь студентам | 5 | 26.05.2009 22:23 |