![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
void* |
![]()
Сообщение
#1
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Всем привет. Есть один маленький проектик, при компиляции которого Qt Creator ругается на то что одни и те же функции объявляются несколько раз. Скорее всего это из-за множественного включения одних и тех же файлов, но как этого избежать и из-за чего именно это не понимаю). Структура такая(инклюдов):
defines.h #ifndef DEFINES_H #define DEFINES_H //... #endif // DEFINES_H calculations.h #ifndef CALCULATIONS_H #define CALCULATIONS_H #include "defines.h" //... #endif // CALCULATIONS_H iterationsdialog.h #ifndef ITERATIONSDIALOG_H #define ITERATIONSDIALOG_H #include "calculations.h" //... #endif // ITERATIONSDIALOG_H iterationsdialog.cpp #include "iterationsdialog.h" #include "iterationtable.h" //... iterationtable.h #ifndef ITERATIONTABLE_H #define ITERATIONTABLE_H #include "calculations.h" //... #endif // ITERATIONTABLE_H iterationtable.cpp #include "iterationtable.h" //... Ну и в файлах MainWindow уже подключается iterationsdialog.h и используется. Так вот проблема собственно в том, что все функции, описанные в calculations.h почему-то описываются несколько раз, на что и ругается компилятор... как это исправить? Сообщение отредактировал void* - 22.4.2010, 21:38 |
|
|
![]() |
frg10 |
![]()
Сообщение
#2
|
Студент ![]() Группа: Участник Сообщений: 47 Регистрация: 8.11.2009 Из: Ростов-на-Дону Пользователь №: 1213 Спасибо сказали: 5 раз(а) Репутация: ![]() ![]() ![]() |
Всякие мелкие функции можно писать полностью в заголовочных файлах, но нужно делать их inline - тогда линкер ругаться не будет. НО! это приводит к разбуханию кода, т.к. вместо вызова функции может вставиться её тело целиком (это решает компилятор).
П.С. Кстати, впомните, что весь STL в заголовочных файлах лежит. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 11:03 |