| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Почему здесь определена переменная два раза? |
| Автор: Proger10 30.3.2014, 11:23 | ||
На Стэке наткнулся на интересную для себя тему: http://stackoverflow.com/questions/14402320/xcode-duplicate-symbol-error-when-using-global-variable там вопрос:
Но объяснения я так и не понял. Почему здесь myFoo оказывается объявленным два раза? Где он объявлен второй раз? Он же только раз объявлен в A.h. В чём здесь проблема? Объясните пожалуйста. |
| Автор: Alexeis 30.3.2014, 13:54 |
| Объявлять переменные в хидере плохой стиль. Если хидер включить в 2 cpp модуля, то будут созданы 2 экземпляра переменной. Переменные нужно объявлять в cpp файле, а если нужно чтобы ее видели другие модули, то нужно в хидере описывать переменную 2й раз как extern . |
| Автор: Cheloveck 30.3.2014, 13:55 |
| myFoo будет объявляться каждый раз при включении A.h. В данном примере -- одни раз. |
| Автор: Proger10 31.3.2014, 09:31 |
| Вот оно как оказывается. Если два раза проинклюдить, то конечно же ошибка возникнет, теперь понял. Спасибо! |
| Автор: borisbn 31.3.2014, 11:46 | ||
В сообщении компилятора даже сказано, в какие два исходника этот h-ник включен |