问题 使用QT_BEGIN_NAMESPACE声明命名空间很重要.QT_END_NAMESPACE


QT_BEGIN_NAMESPACE有什么影响?

QT_BEGIN_NAMESPACE
class QLineEdit;
QT_END_NAMESPACE

如果我不使用那样的类声明,会出现任何问题吗?


10581
2017-07-27 07:03


起源

看看这个 qtcentre.org/threads/... - liaK
wiki.qt.io/Qt_In_Namespace - Honest Abe


答案:


QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE 是预处理器宏,它们在中定义 QtGlobal 如:

#define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
#define QT_END_NAMESPACE }

但是:当使用Qt配置和构建Qt时,这两个宏只会产生任何影响 -qtnamespace 选项,它允许您在用户定义的命名空间内构建Qt。

所以:如果你不使用(或计划使用)以这种方式构建的Qt库(默认情况下,Qt库驻留在全局命名空间中),省略 QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE 不会导致任何问题。


16
2017-07-27 07:45