我目前正在用Qt(4.7)编写一个小应用程序。我使用嵌套的命名空间,如
namespace app {
namespace core {
class CoreClass {...}
}
}
因为我有点懒惰,所以我使用符号作为包含开始和结束命名空间声明的快捷方式:
APP_START
class CoreClass {...}
APP_END
符号在全局头文件中定义。
到目前为止,这么好。它在编译时工作得很好。但是当moc生成器创建moc文件时,它会错过命名空间声明,并且在标准命名空间中生成方法。什么时候不使用符号,一切正常。
当我重新定义QT_BEGIN_MOC_NAMESPACE
符号时,编译器会在每个include上抛出重新定义的警告。这确实有效,但我认为这不是很好。
这个问题有更好的解决方案吗?
答案 0 :(得分:0)
首先,我要找出为什么moc没有进行宏替换。也许 - 我错了?
其次,你可以尝试-D参数到moc。也许类似于:moc“-DAPP_BEGIN = namespace app {namespace core {”