如何在moc文件中使用级联命名空间?

时间:2011-02-27 16:00:16

标签: c++ qt moc

我目前正在用Qt(4.7)编写一个小应用程序。我使用嵌套的命名空间,如

namespace app {
    namespace core {
        class CoreClass {...}
    }
}

因为我有点懒惰,所以我使用符号作为包含开始和结束命名空间声明的快捷方式:

APP_START
    class CoreClass {...}
APP_END

符号在全局头文件中定义。

到目前为止,这么好。它在编译时工作得很好。但是当moc生成器创建moc文件时,它会错过命名空间声明,并且在标准命名空间中生成方法。什么时候不使用符号,一切正常。

当我重新定义QT_BEGIN_MOC_NAMESPACE符号时,编译器会在每个include上抛出重新定义的警告。这确实有效,但我认为这不是很好。

这个问题有更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先,我要找出为什么moc没有进行宏替换。也许 - 我错了?

其次,你可以尝试-D参数到moc。也许类似于:moc“-DAPP_BEGIN = namespace app {namespace core {”