看板 C_and_CPP 關於我們 聯絡資訊
我忘了我之前寫過一篇,有提過相關經驗, 不過找不到,找到再補上來, ( 有興趣的話可以自己先找)。 ※ 引述《iamstudent (stu)》之銘言: 前文恕刪。 : c沒有private或是public的功能 : 是否能夠利用把函數藏進c檔 可以,用 static 關鍵字。 // A.c static void Set(int *x) {*x=1;} // B.c static void Set(int *x) {*x=2;} static 宣告下去之後,該 function 可視域只能在 A.c / B.c 被看到,不會交互影響。 所以 static function 較常直接寫在 .c 裡面, 連 .h 裡面的宣告都不寫。 : c沒有namespace : 那麼函數的命名是否都要非常小心 : 而無法使用簡短名稱就好? 照你的看法說來,是的。 且中大型專案裡,我在 C 裡面 function 命名方式常被打槍, 假設是 A.h 裡面的 function,所有函式名稱一律灌上 A 開頭; 假設是 mat.h 裡面的 function,所有函式名稱一律灌上 mat 開頭。 風格有兩種: mat_function_name() , MatFuncName(); // mat.h ; 這種作法就是「自以為是」可以仿 namespace 簡單作法。 不過這樣下來就不會撞名,因為在一個專案裡面不會有二個 .h 名稱一樣, 但缺點就是函式名稱比一般人寫的長到不像話。 ( 麻煩一點,但我較求簡便性的正確 ) : 還是說實際上有什麼比較安全的設計原則? : ------------------------------------------------------ : 第二個問題是 : B.c並不會被別人include : 本身就有程式進入點 : (但不是main也不是win main,因為是plugin程式,名稱也非常不顯眼) : 目前來看 : 只會有B.c會去include B.h : 那麼,提出head檔B.h,是否是多餘的? 不會。一方面如上述的 static function 問題, 一方面不代表日後維護會再用到 B.h : 究竟應該把.c檔的函數與型態定議都提出到head : 還是只提出不會與別人衝突的部份就好 我簡單的說吧,我寫純 C 的習慣是, 宣告在 B.h 的 data type、fuction, 視為 class 裡面的 public; 寫在 B.c 的 data type、function, 若要作為 private 作用, 一律宣告成 static , 其他還要再實作 B.h 裡面,所有被宣告的 function。 我大型專案經驗不多,以上淺見供參考。 -- No matter how gifted you are, alone, can not change the world. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.78.41
tropical72:找到了, #1E03uZo_ 下半段有講範例。 11/11 17:20