Qt';s moc预处理器需要所有C++;预处理器标志 我注意到QPoT将所有C++预处理器标志传递给MOC实用程序。我在一个文件上尝试了不带这些标志的moc,它产生了相同的结果。我的问题是:在某些情况下,moc需要这些标志吗?

Qt';s moc预处理器需要所有C++;预处理器标志 我注意到QPoT将所有C++预处理器标志传递给MOC实用程序。我在一个文件上尝试了不带这些标志的moc,它产生了相同的结果。我的问题是:在某些情况下,moc需要这些标志吗?,qt,Qt,moc创建一个CPP文件,用于管理类的插槽和信号 如果其中任何一个在预处理器规则下,MOC需要了解它。 例如: class A { Q_OBJECT public slots: #ifdef ENABLE_SLOT1 void slot1(); #endif; void slot2(); }; 如果运行moc时没有“-DENABLE\u SLOT1”参数,则生成的CPP文件将不知道它需要生成代码处理SLOT1()。您的意思是-D..定义,还是cxflags?下面是一个示例:“moc-

moc创建一个CPP文件,用于管理类的插槽和信号

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

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

如果运行moc时没有“-DENABLE\u SLOT1”参数,则生成的CPP文件将不知道它需要生成代码处理SLOT1()。

您的意思是
-D..
定义,还是
cxflags
?下面是一个示例:“moc-DCOMPONENT\u LIBRARIESDIR=“\”/usr/local/../lib\”-DSYSCONF\u DATADIR=“\”/usr/local/../etc\”"-DQT\u GUI\u LIB-DQT\u CORE\u LIB-DQT\u共享-I/usr/local/qt-4.8.0/mkspecs/linux-g++-I../lng ide-I/usr/local/qt-4.8.0/include/qt-CORE-I/usr/local/include/qt-GUI-I/usr/local/qt-4.8.0/include-I/I/usr/local/local/qt-4.8.0/include/../I/I/usr/local/../../I/I/usr/l/../../I/I/I/I/usr/I/I/I/.h/lng/l/../l/../l/moc_diagnosis_viewer.cpp”和&“moc../diagnosis_viewer.h-o moc_diagnosis_viewer.cpp“产生相同的结果。一方面,预处理器宏影响头文件的结果代码,所以moc当然需要它们。”。但另一方面,我试图使我的类定义依赖于预处理器宏的所有操作都失败了,因此,例如,如果您生成一些插槽预处理器宏的名称,moc将无法解析它们。这有点讽刺,因为主运行中心似乎根本不看这些定义。。。