QT_BEGIN_NAMESPACE和QT_END_NAMESPACE的做用

在Qt示例代碼中,頭文件有以下內容
QT_BEGIN_NAMESPACE
class QAction;
class QMenu;
class QPlainTextEdit;
QT_END_NAMESPACEspa

在編譯時就會變成這樣:
namespace QT_NAMESPACE
{
class QAction;
class QMenu;
class QPlainTextEdit;
}指針

QT_NAMESPACE是Qt本身定義的命名空間。這樣能夠在用戶本身定義的命名空間中編譯整個Qt程序。
目前有些舊編譯器不支持,不過影響不大
至於所謂加快編譯,主要是前置聲明的做用,與命名空間不要緊

使用場景爲:頭文件中用到類指針(而非實現),由於不涉及實例化,能夠不包含這些類的頭文件,只包含類的前置聲明

優勢爲:    頭文件的內容少,沒必要每次都包含不少頭文件,避免程序中各類頭文件屢次包含致使解析耗時編譯慢,
            聽說在大型程序做用明顯
            
缺點爲:    在實現文件.CPP中須要包含上面前置聲明類的頭文件。
相關文章
相關標籤/搜索