强制 Qt MOC 扩展一些自定义宏?

Force the Qt MOC to expand some custom macros?

是否可以强制 Qt MOC 扩展我的一些自定义预处理器定义以实现某种 2 遍预处理? 例如:

// MOC macro
@MOC #define add(a, b) (a + b) // Should be expanded by MOC (1st run)

// "Normal" macro
#define sub(a, b) (a - b) // Should be expanded by preprocessor (2nd run)

如果您的目标是仅在 Moc 传递期间启用或禁用某些宏,您可以按照 peppe 的提示测试 Q_MOC_RUN 定义。

#ifdef Q_MOC_RUN
#define MyMacro valueDuringMoc
#else
#define MyMacro defaultValue
#endif

如果您想依赖与 MOC 相同的机制来构建自己的预处理器规则,即在最终构建中包含的 .h 文件中生成额外的 C++ 代码,那么您应该看看 other question.