Qt是一个符合C++的实现吗?

Arm*_*yan 0 c++ qt language-lawyer

C++标准是否隐式或明确地允许这样的语言扩展(或使用您喜欢的任何其他术语)作为MOC?

也就是说,我们可以在技术上将Qt(包括MOC)称为符合C++的实现吗?

fil*_*mor 14

该标准并未告诉您在编译文件之前不应对文件进行预处理,这就是做法moc,因此这是完全合法的.Qt是一个C++库,而不是该语言的实现.


Fra*_*eld 5

MOC是代码生成器,而不是语言扩展.所有代码moc生成你也可以手工编写(这将是耗时的,令人头脑麻木和容易出错).Qt使用一些宏,如Q_OBJECT,Q_SIGNALS,Q_SLOTS等作为声明,并给moc提示.这是预处理器的完美"合法"用法.您可能认为非标准的唯一事情是运行moc以在构建项目时生成额外代码的额外步骤.这是构建系统的问题(代码生成并不常见,请参阅解析器,IPC接口等),并且不在C++范围内.