因為個人愛好,平時在家學習單片機開發,沒事寫寫程序,不知道怎么地,突然就想用C模仿C++寫程序,于是乎,弄了幾個宏定義。。。
首先,為了在樣子上長得像,需要這樣一個宏定義,如下:
光這樣是不行的,因為C++中有默認的構造函數,析構函數,所以還需要如下這個東西,如下:
這樣就有了一個this指針,構造函數fnCtor,析構函數fnDtor,這個結構體里面的uiClassSize,后面會用的到,用來保存創建的類占用存儲控件大小的。
由于每一個類都需要如上的構造函數,析構函數,所以還需要一個宏來實現定義一個類,如下:
上面幾個宏就能大概實現了。把這幾個宏放到一個頭文件中,以后新建一個類的時候,新建一個頭文件并引用這個頭文件。下邊,用這種方式定義一個類(這里沒有顯示上面宏定義的頭文件,其實包含了)。如下:
每新建一個類都要有上圖中,class_default;這個是第二張圖片中結構體指針變量,這是為了每一個類都有構造函數,析構函數,其他元素就可以自定義了,也就是類的成員變量,比如flag,data,當然也可以用函數指針來聲明類的成員函數。
僅僅這樣還是不夠滴。還需要一個宏,如下:
這個宏用在類對應的c文件中使用,如下:
前兩個函數是構造函數,和析構函數。功能就自己定義了。最下面的const CLASS(CTest) 后面是名字,可以自己取,里面的內容中第一條等號后面的 一定要是 &__XXX_class ,XXX就是前面頭文件中類的名字,一定要這樣寫。其實就是把 class_define(X) 這個宏中定義的__X_class的地址賦值給了pClass_default。到這里就搞定了。
為了能夠生成一個對象,還需要這樣一個函數,用來生成一個類的對象,函數如下:
以后用這個函數創建一個類就可以了。到這里就差不多了。
使用類的時候是這樣的,如下:
以后有時間在貼出具體的用這種方法寫單片機程序的例子。