|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.08.2009, 15:33 | #1 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
multiple definition
Вообщем компилятор пишет
pacman.o (.bss+0x0) : multiple definition of sc main.o (.bss+0x0) : first definition here main.o Он вообще о чём? Какие ещё множественные объявления. И так пишет на любую попытку объявления глобальной переменной в pacman.h pacman.h Код:
pacman.cpp Код:
Код:
|
20.08.2009, 15:40 | #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 |
20.08.2009, 15:51 | #3 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
pproger
Крута. Теперь компилится. Эээээ... А почему наоборот? И почему до этого ругалось? |
20.08.2009, 15:54 | #4 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Потому что pacman.h включён и в pacman.cpp и в main.cpp, то есть объявление переменной происходило два раза...
|
20.08.2009, 16:02 | #5 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Ну так заголовочный файл по идее и должен включаться в два.
Тоесть определение два раза происходило, ааа, теперь ясно. Крута, теперь у меня сегментатион фаулт. |
20.08.2009, 16:30 | #6 |
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
Всё это круто, но с константами что мне делать?
|
20.08.2009, 16:40 | #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 |
||
20.08.2009, 16:44 | #8 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Объявляйте их со спецификатором extern.
pacman.cpp Код:
Код:
Код:
Последний раз редактировалось netrino; 20.08.2009 в 16:47. |
20.08.2009, 16:51 | #9 | ||
Подтвердите свой е-майл
Регистрация: 27.07.2009
Сообщений: 437
|
jojahti
Цитата:
netrino Цитата:
Тогда я не вполне понял что такое определение и объявление. Ведь если с префиксом экстерн обычной переменной присвоить что-то. Опять будет мультипле дефинитион. |
||
20.08.2009, 16:54 | #10 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Ну, обычные переменные по умолчанию разрешены к использованию в других модулях, в то время как константы нет. Потому константы надо явно определять как extern
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Qbasic ошибка "duplicate definition" | Костя КС | Помощь студентам | 5 | 26.05.2009 22:23 |