控制代碼類的應用中減少重複編譯的方法

2021-06-01 21:22:17 字數 912 閱讀 9347

我們知道,當乙個原始檔所依賴的標頭檔案被修改時,這個原始檔需要被重新編譯(易碎的基類問題),為了能講述我將說明的這個方法,我們先來看看乙個簡單的例子,其**如下:

struct a

;class b

;#include "head.h"

#include b::b(int n)

void b::show()

b::~b()

#include #include "head.h"

using namespace std;

int main()

如果我們要修改結構體a,比如我們需要對a新增乙個成員變數,這時候head.h改變了,從而包含了它的head.cpp和main.cpp都需要重新編譯

我們知道類b是乙個包裝了類a的控制代碼類,對於這種形式,如何修改**使得修改a的定義時能減少重新編譯呢?

觀察head.h,我們發現在b的申明過程中並不需要完全定義類a,利用這點我們可以稍微修改下**,修改後的**如下:

class b

;#include "head.h"

#include struct b::a //a的完全定義

;b::b(int n)

void b::show()

b::~b()

#include #include "head.h"

using namespace std;

int main()

這樣修改後,如果我們需要修改a的定義,我們只需要修改head.cpp,從而可以避免main.cpp需要重新定義

總結:如果我們的系統中存在有控制代碼類,並且系統非常大,則我們可能需要這種所謂的奇技淫巧來避免編譯時間過多

C 中的控制代碼類

初次在 c primer 看到控制代碼,不是特別理解。在搜尋相關資料後,終於有了點頭緒。首先明白控制代碼要解決什麼問題。參考文章 c 沉思錄 閱讀筆記 類 場景 我們要把繼承類繫結到基類的例項物件中 該場景有兩個問題需要解決 記憶體分配和未知物件的繫結 有如下解決方案 直接複製繼承類物件到基類物件中...

MFC中獲得各個類的控制代碼的總結

1 在view中獲得doc指標 cyousdidoc pdoc getdocument 乙個視只能有乙個文件。3 在view中獲得mainframe指標 5 獲得當前文件指標 cdocument pcurrentdoc cframewnd m pmainwnd getactivedocument 6...

MFC中獲得各個類的控制代碼的總結

vc 獲取當前應用程式例項控制代碼的幾種方法 1.afxgetinstancehandle 用這個函式可以直接獲得應用程式的例項控制代碼 mfc中獲取各種類指標 獲取選單指標 cmenu pmenu afxgetmainwnd getmenu 獲取工具欄 狀態列指標 主框架中可以直接使用m wnd ...