Arm*_*yan 0 c++ qt language-lawyer
C++标准是否隐式或明确地允许这样的语言扩展(或使用您喜欢的任何其他术语)作为MOC?
也就是说,我们可以在技术上将Qt(包括MOC)称为符合C++的实现吗?
MOC是代码生成器,而不是语言扩展.所有代码moc生成你也可以手工编写(这将是耗时的,令人头脑麻木和容易出错).Qt使用一些宏,如Q_OBJECT,Q_SIGNALS,Q_SLOTS等作为声明,并给moc提示.这是预处理器的完美"合法"用法.您可能认为非标准的唯一事情是运行moc以在构建项目时生成额外代码的额外步骤.这是构建系统的问题(代码生成并不常见,请参阅解析器,IPC接口等),并且不在C++范围内.