1. 程式人生 > >qt中moc的作用

qt中moc的作用

 Qt 將原始碼交給標準 C++ 編譯器,如 gcc 之前,需要事先將這些擴充套件的語法去除掉。完成這一操作的就是 moc。

moc 全稱是 Meta-Object Compiler,也就是“元物件編譯器”。Qt 程式在交由標準編譯器編譯之前,先要使用 moc 分析 C++ 原始檔。如果它發現在一個頭檔案中包含了巨集 Q_OBJECT,則會生成另外一個 C++ 原始檔。這個原始檔中包含了 Q_OBJECT 巨集的實現程式碼。這個新的檔名字將會是原檔名前面加上 moc_ 構成。這個新的檔案同樣將進入編譯系統,最終被連結到二進位制程式碼中去。因此我們可以知道,這個新的檔案不是“替換”掉舊的檔案,而是與原檔案一起參與編譯。另外,我們還可以看出一點,moc 的執行是在前處理器之前。因為前處理器執行之後,Q_OBJECT 巨集就不存在了。

在命令列下輸入moc yourfilename.h -o moc_youfilename.cpp生成不帶Q_OBJENT的原始檔。