簡體   English   中英

來自OOP背景,有哪些C程序/庫可以幫助我獲得“C方式”?

[英]Coming from an OOP background, what would be some C programs/libraries to help me get the “C way”?

我已經做了很長時間的OOP(C ++ / Java / PHP / Ruby),並且很難想象Linux或Apache這樣的大型程序和庫是如何完全以命令式的方式編寫的。 什么是我可以看到的小型開源C項目,以了解C中的事情是如何完成的?

如果項目托管在GitHub上,則獎勵積分。

事情在C中完全相同,但語言的支持較少。 您可以創建一個結構,而不是創建一個類來封裝某個狀態。 使用隱式此參數創建類成員,而不是創建類成員,您創建的函數顯式傳遞struct *作為第一個參數,然后對結構進行操作。

為確保不破壞封裝,您可以在頭中聲明結構,但只能在使用它的.c文件中定義它。 虛函數需要更多的工作 - 但同樣,它只是在結構中放置函數指針的情況。 這在C中實際上比C ++更方便,因為在C中你可以手動填寫你的vtables,對代碼的哪一部分實現COM接口的一部分(如果你當然是在C中的COM)有很好的控制水平。

您可能會發現有趣的ccan (Comprehensive C Archive Network,以Perl的CPAN為模型)。

它目前很小,但貢獻很高。 許多貢獻來自Linux內核開發人員。

幾乎所有的東西都屬於“幾千LOC”或更少的類別。

如果您想要一個小示例,請嘗試查看基本Linux CLI實用程序的源代碼。 GNU binutilsmake或任何其他GNU實用程序都有完整的源代碼,並且代碼庫相對較小(有些代碼庫比其他代碼庫大)。 最簡單的事情通常是從您之前使用過並且已經熟悉的實用程序開始。

查看GLib ,了解如何在C中進行面向對象編程的幾乎規范示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM