學習C程序設計的資源




design (6)

來自OO背景(C#/ java)我正在尋找資源來學習如何很好地設計純C程序。

雖然我熟悉C的語法,並且我可以編寫小程序,但我不確定採用更大應用程序的方法,以及採用何種技術。 你們可以推薦的任何東西。

編輯:我很高興完全放棄OO用於C語言編程,我的興趣是學習如何在沒有OO的情況下構建程序,我想學習用程序語言設計程序的好方法。


更大的應用? C的優勢在於你必須處理諸如設備驅動程序,調度程序和其他OS風格的東西之類的低級別事物。

你可以製作像OO一樣操作的C,但是這將是一種重新發明輪子的練習。


minin by tanenbaum


大衛漢森的“C接口和實現”解決了我從OO回到C的問題。

C接口和實現

說真的,它的方法在避免意外地建造許多非oo系統結束的大型紗線球方面產生了巨大的差異。


一個小問題是“向後”命令你的.c文件 - 即把main()放在文件的底部,並始終確保本地函數(你的.h文件中沒有的那些,你剛剛寫的使用在那個文件中)住在他們第一次使用的地方。 這意味著你不必為它們編寫原型,如果你不得不改變它們的API,那就少了一件事。

然後,作為獎勵,vim中的'gD'命令將始終轉到函數的定義,如果它在同一個文件中:)


雖然它是一個與語言無關的文本,但Code Complete在代碼結構和組織方面以及構建實踐方面提供了很多很好的指導。


這裡有一些關於C語言中OO編程的不同問題的一些有趣的回答 。我發表了一篇關於我使用的一些C代碼的文章,其中基本上通過不包括虛方法來阻止對象導向。

如果我正在進行C編碼,我會使用這種技術來定義'對象'。

我發現保持設計模式始終是有用的,並且可以在大多數語言中實現。

這是一個很好的PDF討論面向對象的C編程





design