Qt的moc预处理器是否需要所有C ++预处理器标志

时间:2012-10-05 21:04:23

标签: qt

我注意到qmake将所有C ++预处理程序标志传递给moc实用程序。我在一个文件上尝试了没有这些标志的moc,它产生了相同的结果。我的问题是:是否会出现moc需要这些标志的情况?

1 个答案:

答案 0 :(得分:2)

moc创建一个CPP文件,用于管理类的SLOTS和SIGNALS。

如果其中任何一个属于预处理器规则,MOC需要了解它。 例如:

class A {
 Q_OBJECT
public slots:
#ifdef ENABLE_SLOT1
  void slot1();
#endif;
  void slot2();
};

如果你运行没有“-DENABLE_SLOT1”参数的moc,那么生成的CPP文件将不知道它需要生成代码处理slot1()。