【Qt】QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010168781/article/details/86631502

在看QtCreator源码时,总遇到QT_BEGIN_NAMESPACE 和 QT_END_NAMESPACE两个宏,源码中对这两个宏的定义伪代码如下

#if !defined(QT_NAMESPACE)
# define QT_BEGIN_NAMESPACE
# define QT_END_NAMESPACE
#else
# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
# define QT_END_NAMESPACE }
#endif

以前Qt4是没有Qt命名空间的,后来才加上的,编译Qt源码时会有选项,是否将这些类放到专用的Qt命名空间内,默认是没有的。这就出来问题了,为了统一,如果你的代码在默认没有Qt命名空间的SDK中编译,那你就不用在前置声明下面这些类的时候加上命名空间,但如果你在有Qt命名空间的SDK中编译,那就得加上命名空间了,为了屏蔽这个差异,使得你的源码能在这两种情况下都进行编译,Qt提供了QT_BEGIN_NAMESPACE和QT_END_NAMESPACE宏,这样开发者就省得自己来用程序或宏进行处理了。

参考博客:https://blog.csdn.net/u012150179/article/details/14441259

猜你喜欢

转载自blog.csdn.net/u010168781/article/details/86631502
QT