moc 全称是 Meta-Object Compiler,也就是“元对象编译器”。Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起参与编译。另外,我们还可以看出一点,moc 的执行是在预处理器之前。因为预处理器执行之后,Q_OBJECT 宏就不存在了。
在构建完项目之后,可以在该项目的目录下找到debug目录下的moc_项目.moc文件,里面就是moc所生成的代码。
本文解释了MOC在Qt开发中的作用,它如何检测Q_OBJECT并生成额外C++源文件,这些文件与原文件一起编译。重点介绍了生成的moc_文件位置和MOC的工作原理,即在预处理器之前执行。
&spm=1001.2101.3001.5002&articleId=124950507&d=1&t=3&u=f0d6903608f54201b052290028ed0baa)
1645

被折叠的 条评论
为什么被折叠?



