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

时间:2018-04-22 08:51:26

标签: c++ qt c-preprocessor moc

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

// 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)

1 个答案:

答案 0 :(得分:1)

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

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

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