Форум программистов, компьютерный форум CyberForum.ru

Двойная загрузка файла - C++

Восстановить пароль Регистрация
 
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
01.11.2012, 15:38     Двойная загрузка файла #1
Помогите понять, в чем тут дело.
Код пишу в среде QT Creator под OS X, компилятор - CLang. При компиляции такого кода, появляется ошибка ":-1: ошибка: 1 duplicate symbol for architecture x86_64".
Имеется файл w.h
C++ (Qt)
1
2
3
4
5
6
#ifndef W_H
#define W_H
namespace n {
int a;
}
#endif
main.cpp и b.cpp включают этот файл (include "w.h").

Никак не могу понять, почему файл включается дважды, когда есть директива прекомпилятора: не делать это?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2012, 15:38     Двойная загрузка файла
Посмотрите здесь:

Загрузка чисел из файла C++
C++ загрузка файла в дерево
Файлы, загрузка с файла C++
C++ [C++] Загрузка файла
C++ загрузка bmp файла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
01.11.2012, 15:45     Двойная загрузка файла #2
Да там что-то непонятное творится в этом смысле. у меня та же ерунда происходит с, принципе, библиотечным qgl.h
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
01.11.2012, 18:43  [ТС]     Двойная загрузка файла #3
Хм, странно. Но это ничего, если бы не необходимость использования переменных двумя классами...

Добавлено через 2 часа 35 минут
Есть ли всё-таки способ использования переменной несколькими функциями из разных файлов?
CEBEP
105 / 105 / 9
Регистрация: 21.03.2010
Сообщений: 437
01.11.2012, 19:26     Двойная загрузка файла #4
Ну решение то очевидно... в мэйн не подключать, а подключать в b.h...
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
01.11.2012, 19:32  [ТС]     Двойная загрузка файла #5
Про это я уже думал, но их надо использовать в обоих файлах.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 19:39     Двойная загрузка файла #6
Цитата Сообщение от lunohod-1 Посмотреть сообщение
Никак не могу понять, почему файл включается дважды, когда есть директива прекомпилятора: не делать это?
Эта директива защищает от двойного включения в один файл, а не от двойного включения в разные файлы. Предкомпилятор, так же как и компилятор, в конкретный момент времени видят только один файл, поэтому эта защита, в данном случае, и не срабатывает. Ошибку, если я правильно понимаю, выдаёт компоновщик, который видит все файлы.
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
01.11.2012, 19:42  [ТС]     Двойная загрузка файла #7
Да, ошибку выдает компоновщик. Я действительно забыл, что область видимости ограничена.
Тогда как лучше сделать включение заголовка в несколько файлов?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.11.2012, 19:47     Двойная загрузка файла #8
Цитата Сообщение от lunohod-1 Посмотреть сообщение
Есть ли всё-таки способ использования переменной несколькими функциями из разных файлов?
Чтобы переменная, определённая в одном файле, была видна в другом, нужно объявлять её во всех остальных файлах с помощью extern.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2012, 19:48     Двойная загрузка файла
Еще ссылки по теме:

Загрузка данных из файла с возможностью выбора файла C++
Загрузка файла из интернета C++
C++ Загрузка файла на хостинг

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
lunohod-1
1 / 1 / 0
Регистрация: 14.12.2011
Сообщений: 44
01.11.2012, 19:48  [ТС]     Двойная загрузка файла #9
Спасибо, это я уже делал, но надеялся, что в QT есть что-то для такой проверки
Yandex
Объявления
01.11.2012, 19:48     Двойная загрузка файла
Ответ Создать тему
Опции темы

Текущее время: 21:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru