![]() |
|
![]() ![]() ![]() |
|
malor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Раскидал содержимое MakeScreenShot.cpp по разным cpp и добавил хедеров, теперь VS2008 пишет:
Сами переменные pathEventKB и т.д. лежат в файле Path.h. Внутри файла MakeScreenShot.cpp есть строки: #include "keyboard.h" #include "mouse.h" Внутри каждого из этих двух заголовочных файлов есть строка: #include "Log.h" A файле "Log.h" есть строка: #include "Path.h". Как сделать, чтоб не было redefinition'а? |
|||
|
||||
triclosan |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 515 Регистрация: 18.8.2006 Репутация: 1 Всего: 12 |
в файлах-хедерах есть проверки на "многоразовое" включение?
Если нет - необходимо добавить стандартную-переносимую, либо, раз у вас VS2008 можно #pragma once Это сообщение отредактировал(а) triclosan - 27.6.2011, 15:47 |
|||
|
||||
malor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Добавил #pragma once в файл Path.h, теперь такие error'ы про LNK2005:
![]() |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
определения (не объявления) статических переменных в h-файлах?
Это сообщение отредактировал(а) maxim1000 - 27.6.2011, 17:52 -------------------- qqq |
|||
|
||||
malor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
В Path.h строки вида:
const char* pathEventKB = "Z:\\EventKB.txt"; |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
надо в h-файлах оставить _объявления_, а в cpp перенести _определения_
объявление: extern const char *pathEventKB; определение: const char *pathEventKB="something"; -------------------- qqq |
|||
|
||||
malor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
Я сейчас заменил строку (а также и прочие)
const char* pathEventKB = "Z:\\EventKB.txt"; на #define pathEventKB "Z:\\EventKB.txt" и скомпилилось без error'ов. Так не считается правильным ? |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
define'ы без надобности использовать не стоит
препроцессор C++ - по сути, другой язык и с самим C++ имеет мало общего (а иногда и конфликтует) иногда без него не обойтись, но это не тот случай -------------------- qqq |
|||
|
||||
malor |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 632 Регистрация: 17.11.2006 Репутация: нет Всего: нет |
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 1 Всего: 110 |
ну если это что-то типа конфигурации для сборки программы, то, возможно, define здесь в тему - его обычно для чего-то подобного и используют
альтернативный вариант - создание класса с методами для доставания разнообразных параметров, но это есть смысл городить, только если их в процессе работы будут менять, или хотя бы для того, чтобы не пересобирать программу каждый раз при изменении настроек если же это что-то вроде прототипа для локального использования, то, наверное, define - OK -------------------- qqq |
|||
|
||||
Сыроежка |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 24.6.2011 Репутация: нет Всего: 1 |
Это правильно, но не эффективно. Если у вашего компилятора не включена опция дублирующиеся строковые литералы хранить как один литерал, то каждый раз, когда вы будете использовать эту манифестную константу, объем вашего кода будет увеличиваться. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |