1

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

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

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

APP_START
    class CoreClass {...}
APP_END

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

到目前为止,一切都很好。它在编译时完美运行。但是当 moc 生成器创建 moc 文件时,它错过了命名空间声明,并且方法是在标准命名空间中生成的。当不使用符号时,一切正常。

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

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

4

1 回答 1

0

首先,我会找出 moc 不进行宏替换的原因。也许-我错了?

其次,可以试试moc的-D参数。也许是这样的: moc "-DAPP_BEGIN=namespace app { namespace core {"

于 2011-02-27T23:42:52.277 回答