轉載自:http://www.cnblogs.com/stli/archive/2010/10/16/1853190.htmlphp
OOPC是指OOP(Object-Oriented Programming)與C語言的結合,它是一個面向對象C語言編程框架。它是一套C語言的宏,定義了OOP概念的關鍵字,藉助於這一套宏,實現面向對象的特性,如類、對象、繼承、接口、多態、消息等。html
C++對於大型軟件架構的良好可控性,和對之後程序員維護代碼時良好的可讀性;然而就目前來講,在嵌入式領域普遍的使用C++顯然是不現實的事情。通常的嵌入式系統開發中只用到了其中的一小部分功能,而不須要所有的機制,好比多重繼承、運算符重載等。所以,許多嵌入式系統的開發者就捨棄了C++的龐大身軀而回歸到精簡的C環境中。 程序員
通常狀況下,一個更容易擴展、維護的軟件一般採用的是OOP的思想,添加一個本來不存在的相對無關單獨的個體,總比在一個已經存在的過程內硬塞進去一個對象要簡單;並且面向過程更容易致使混亂的維護。然而捨棄C++的同時也捨棄了珍貴的OOP能力,實在太惋惜了。 編程
C語言良好的可移植性,對內存等良好的操做性以及執行之速度均是通常嵌入式產品的不二首選。咱們要應此放棄C++嗎?固然不,幸虧已經有不少優秀的設計師爲咱們指明瞭C語言OOP化的道路。 架構
雖然OOPC語法不如C++那麼簡潔,可是OOPC也有亮麗的特點,就是編譯後的程序所佔的內存空間比C++小的多,執行效率高,適用於Embedded System。框架
Axel-Tobias Schreiner闡述了利用普通ANSI-C一樣能夠實現面向對象思想,1993年10月出版圖書《Object-oriented Programming with ANSI-C》闡述了利用ANSI-C實現面向對象編程思想的基礎。oop
本書下載地址:http://www.planetpdf.com/codecuts/pdfs/ooc.pdf優化
中文翻譯地址:http://wiki.chinaunix.net/index.php/OOC:內容spa
在2001年,Laurent Deniau以C 的宏指令(Macro)定義出OOPC的機制,並在其網頁上公開與你們分享。請參考其網頁:http://ldeniau.home.cern.ch/ldeniau/html/oopc/oopc.html.net
LW_OOPC(Light Weight Object-oriented Programming with C,2010.1.24開源)輕量級的面向對象C編程框架是由臺灣高煥堂先生以及他的MISOO團隊創做了第一個版本以後,又由金永華改進優化,再以LGPL協議開源出來的。這個框架的面世與高煥堂的著做《UML+OOPC嵌入式C語言開發精講》有關。總共一個.h文件、25個宏、約100行代碼,很是的輕量級,但很好的支持了不少的面向對象特性,好比繼承、多態(非徹底意義上的多態,由於要提供類型,不是徹底統一的形態),能夠很優美的實現面向接口編程。
LW_OOPC不足以提供足夠的能力使咱們實現面向對象全部的概念。可是咱們依然能夠應用它們完成咱們簡單的面向對象思想的構建。