Russian Qt Forum
Ноябрь 25, 2024, 07:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Для чего используется QT_BEGIN_NAMESPACE  (Прочитано 18467 раз)
dr_Begemot
Гость
« : Август 19, 2009, 10:09 »

Для чего используется конструкция QT_BEGIN_NAMESPACE - QT_END_NAMESPACE?
Например:
QT_BEGIN_NAMESPACE
class QVBoxLayout;
QT_END_NAMESPACE

Что это дает?

P.s. Пожалуйста, не отсылайте к докам, тут вроде не сложный момент и объяснение не займет много строчек.
Спасибо)
Записан
Rcus
Гость
« Ответ #1 : Август 19, 2009, 10:35 »

./configure --help
Цитировать
-qtnamespace <name>  Wraps all Qt library code in 'namespace <name> {...}'.
Записан
dr_Begemot
Гость
« Ответ #2 : Август 19, 2009, 11:00 »

./configure --help
Цитировать
-qtnamespace <name>  Wraps all Qt library code in 'namespace <name> {...}'.

Гм... и?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Август 19, 2009, 11:01 »

при компиляции заменит эти макросы на неймспейс, указанный при сборке Qt я так понял...
Записан
dr_Begemot
Гость
« Ответ #4 : Август 19, 2009, 11:16 »

при компиляции заменит эти макросы на неймспейс, указанный при сборке Qt я так понял...

А зачем это нужно?
Записан
ритт
Гость
« Ответ #5 : Август 19, 2009, 11:20 »

http://en.wikipedia.org/wiki/Namespace_(programming)
Записан
Rcus
Гость
« Ответ #6 : Август 19, 2009, 11:23 »

Так же как и с no_keywords если вы спрашиваете значит вам не нужно. А некоторым помогает избежать коллизии символов при компоновке.
Записан
UVV
Гость
« Ответ #7 : Август 19, 2009, 12:34 »

http://www.qtcentre.org/forum/f-qt-programming-2/t-whats-effect-of-qt-begin-namespace-thanks-15946.html
Записан
evgeniy
Гость
« Ответ #8 : Июнь 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>?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Июнь 08, 2011, 01:08 »

это нужно для того, чтобы поместить всё Qt в один namespace, что в свою очередь нужно для того, чтобы была возможность использования разных версий Qt в одном проекте, либо из-за конфликта имён/хотелок разработчика.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Июнь 08, 2011, 01:13 »

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

Потому что QtGui включит весь модуль Gui, и если у тебя это написано в заголовочном файле, то все TU, которые включают этот заголовок, будут включать и GtGui, и как следствие, возрастёт время компиляции на пустом месте. Вместо этого используют forward declaration, а в каждом конкретном TU дополнительно подключаются уже те заголовки, которые нужны - <QAction>, <QLabel> и т.д.
Записан
evgeniy
Гость
« Ответ #11 : Июнь 21, 2011, 11:04 »

Ну, вроде понятно. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.252 секунд. Запросов: 22.