作者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/cn.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