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

标签 c++ qt moc

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

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

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

APP_START
    class CoreClass {...}
APP_END

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

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

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

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

最佳答案

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

其次,你可以尝试给moc加上-D参数。可能是这样的:moc "-DAPP_BEGIN=namespace app { namespace core {"

关于c++ - 如何在 moc 文件中使用级联命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5134185/

相关文章:

c++ - 使用与 C++ 标准允许的成员变量相同的名称为构造函数参数初始化成员变量?

c++ - Qt QCombobox 更改滚动箭头

Qt3d 使用 QSceneLoader 和 qt 5.8

c++ - 处理其他信号时等待信号

c++ - #if 已定义 WINDOWS 与 #if 已定义(WINDOWS)

c++ - 包含 std::string 的 memset 结构

c++ - C++ 中的 DirectX 纹理清理

c++ - SDL 中的调度事件

qt - 单文件Qt4演示

qt - 让 moc 在构建过程中跳过文件/文件夹