Russian Qt Forum

Qt => Общие вопросы => Тема начата: dr_Begemot от Август 19, 2009, 10:09



Название: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: dr_Begemot от Август 19, 2009, 10:09
Для чего используется конструкция QT_BEGIN_NAMESPACE - QT_END_NAMESPACE?
Например:
QT_BEGIN_NAMESPACE
class QVBoxLayout;
QT_END_NAMESPACE

Что это дает?

P.s. Пожалуйста, не отсылайте к докам, тут вроде не сложный момент и объяснение не займет много строчек.
Спасибо)


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: Rcus от Август 19, 2009, 10:35
./configure --help
Цитировать
-qtnamespace <name>  Wraps all Qt library code in 'namespace <name> {...}'.


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: dr_Begemot от Август 19, 2009, 11:00
./configure --help
Цитировать
-qtnamespace <name>  Wraps all Qt library code in 'namespace <name> {...}'.

Гм... и?


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: Авварон от Август 19, 2009, 11:01
при компиляции заменит эти макросы на неймспейс, указанный при сборке Qt я так понял...


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: dr_Begemot от Август 19, 2009, 11:16
при компиляции заменит эти макросы на неймспейс, указанный при сборке Qt я так понял...

А зачем это нужно?


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: ритт от Август 19, 2009, 11:20
http://en.wikipedia.org/wiki/Namespace_(programming)


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: Rcus от Август 19, 2009, 11:23
Так же как и с no_keywords если вы спрашиваете значит вам не нужно. А некоторым помогает избежать коллизии символов при компоновке.


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: UVV от Август 19, 2009, 12:34
http://www.qtcentre.org/forum/f-qt-programming-2/t-whats-effect-of-qt-begin-namespace-thanks-15946.html


Название: Зачем нужен QT_BEGIN_NAMESPACE?
Отправлено: evgeniy от Июнь 06, 2011, 10:39
В примере от Qt есть такое:
QT_BEGIN_NAMESPACE
class QAction;
class QDialogButtonBox;
class QGroupBox;
class QLabel;
class QLineEdit;
class QMenu;
class QMenuBar;
class QPushButton;
class QTextEdit;
QT_END_NAMESPACE

Почему вместо этого не поставить просто #include <QtGui>?


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: Alex Custov от Июнь 08, 2011, 01:08
это нужно для того, чтобы поместить всё Qt в один namespace, что в свою очередь нужно для того, чтобы была возможность использования разных версий Qt в одном проекте, либо из-за конфликта имён/хотелок разработчика.


Название: Re: Зачем нужен QT_BEGIN_NAMESPACE?
Отправлено: Alex Custov от Июнь 08, 2011, 01:13
В примере от Qt есть такое:
...
Почему вместо этого не поставить просто #include <QtGui>?

Потому что QtGui включит весь модуль Gui, и если у тебя это написано в заголовочном файле, то все TU (http://www.efnetcpp.org/wiki/Translation_unit), которые включают этот заголовок, будут включать и GtGui, и как следствие, возрастёт время компиляции на пустом месте. Вместо этого используют forward declaration, а в каждом конкретном TU дополнительно подключаются уже те заголовки, которые нужны - <QAction>, <QLabel> и т.д.


Название: Re: Для чего используется QT_BEGIN_NAMESPACE
Отправлено: evgeniy от Июнь 21, 2011, 11:04
Ну, вроде понятно. Спасибо.