作者DIE755127 ()
看板Programming
標題[問題] 請問C介面跟實作分開的作法
時間Fri Apr 27 22:05:30 2018
通常一般的習慣a.c會去include a.h
a.c是實作內容 a.h是介面宣告
b.c只需要include a.h就可以使用a的function
但實際上把a.c include a.h的內容拿掉
編譯過程link也不會發生問題(雖然這樣看起來a.c跟a.h就沒有直接關連)
當然如果a.h內還有定義一些struct或常數會被a.c用到
include a.h就是必須的
不過在不考慮上述的情況下
是否a.c要不要去include a.h只剩下coding習慣的問題?
編譯過程上沒有任何差別?
第二個問題是
去include一個.c檔是絕對必須避免的嗎?
有甚麼情況下是必須要這樣做?(因為有看到有人這樣寫 但覺得不太合常理)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.233.122
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Programming/M.1524837932.A.98F.html
※ DIE755127:轉錄至看板 C_and_CPP 04/27 22:10
1F:推 JFLung9536: 當你的程式有分層架構堆疊 會有變數 42.72.252.83 04/29 01:17
2F:→ JFLung9536: 函數的權限問題 你就瞭解為什麼了 42.72.252.83 04/29 01:18
3F:→ syura945: 不需include .h檔 也能找到 function p 42.72.115.186 05/10 17:26
4F:→ syura945: rototype在寫firmware時常會造成問題 42.72.115.186 05/10 17:26
5F:推 shietsd: 沒include也能用是因為你放在同一層吧114.136.236.182 05/30 18:07
6F:→ shietsd: 程式預設會去同一層或指定目錄找header..114.136.236.182 05/30 18:08
7F:→ shietsd: .114.136.236.182 05/30 18:08
8F:推 shietsd: include.c 我只想到是用inline 宣告+實作114.136.236.182 05/30 18:11
9F:→ shietsd: ?114.136.236.182 05/30 18:11