看板 C_and_CPP 關於我們 聯絡資訊
我目前遇到一份程式碼 整理問題並簡化之後大致如下 有 A.h A.c B.c 而B.c會include A.h 因為我覺得B.c的內容非常多,卻沒有head檔 所以想要把函數與型態定義提出去作成B.h 然後把函數功能註解到head檔以增加可讀性 但是卻遭遇到一些問題 所以想要釐清一下觀念 首先 A.c與B.c有一些完全相同的函數名稱 但是工作內容完全不同 因為沒有宣告在A.h 這一點讓B.c編譯時只會呼叫到自己的函數 而不會呼叫到A.c的同名函數 這讓我在想 c沒有private或是public的功能 是否能夠利用把函數藏進c檔 而達到private的觀念? 這樣想是對的嗎? 但是如果A.c所include的檔案裡面 遇到跟自己函數同樣名稱的時候 麻煩就出現了吧 c沒有namespace 那麼函數的命名是否都要非常小心 而無法使用簡短名稱就好? 還是說實際上有什麼比較安全的設計原則? ------------------------------------------------------ 第二個問題是 B.c並不會被別人include 本身就有程式進入點 (但不是main也不是win main,因為是plugin程式,名稱也非常不顯眼) 目前來看 只會有B.c會去include B.h 那麼,提出head檔B.h,是否是多餘的? head檔應該是給別人使用的介面 但是能否只純粹為了增加可讀性而存在? 這讓我感到疑惑 究竟應該把.c檔的函數與型態定議都提出到head 還是只提出不會與別人衝突的部份就好 全部都提出來的話 A.c應該也要全部提出到A.h去 但是這樣就會發生函數名稱衝突了 我比較缺乏在純c環境的編程經驗 所以想問看看版上大家的想法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.210.62 ※ 編輯: iamstudent 來自: 140.113.210.62 (11/11 16:36)
james732:藏進 .c 檔讓我想到 static, 不知道是不是你需要的 11/11 16:40
james732:如果別人用不到B的介面,那我覺得沒必要寫出 .h 檔 11/11 16:41
letoh:用不到的界面的確是沒必要丟出來,但 .h 不是只放func decla 11/12 20:11
letoh:有些東西為了維護方便,我也會分開放,不會都丟進 .c 11/12 20:12
letoh:例如常數定義或 macro 11/12 20:12