[问题] 函式的原型宣告的地方(.c档或.h档)?

楼主: nimura14 (阵内家的孩子)   2014-09-28 23:32:48
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, GCC
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
没有
问题(Question):
小弟刚开始工作,第一次碰到大形的程式。
有一个问题不太清楚。
有看到专案中的.c档,里头实作了一些函式;
但这些函式的原型部份宣告在同一只.c档里,另一部份宣告在.h档里。
这样做是有什么特别的原因吗?
补充说明(Supplement):
另外想问一下,对于初次接触大型程式的新手。
有没有推荐的书可以看?
总觉得以前大学唸的只是教你拌水泥..砌墙盖房子要自己来..
作者: kerwinhui (kezza)   2014-09-28 23:36:00
就是把函式变成 private function,只能在同一.c中叫也就是abstraction (implementation hiding)的方法当然也有可能是作者没有遵守coding convention
楼主: nimura14 (阵内家的孩子)   2014-09-28 23:40:00
所以就是说这个.c档里实作的function,他愿意给其他人用的,他就把原型宣告在.h里,只给自己用的就宣告在.c囉?忘了说,谢谢1楼的回答!感恩!
作者: Killercat (杀人猫™)   2014-09-29 01:19:00
因为实务上只会去include .h, 所以放在.c的正常来说是不会被看到的,你这样想就对了。对C来讲 宣告位置是限制可见度的唯一方法
作者: carylorrk (carylorrk)   2014-09-29 05:02:00
可见度?visibility 和 linkage 是同一种东西吗?如果是的话,跟宣告位置应该没有关系把XD
作者: johnpage (johnpage)   2014-09-29 06:24:00
在大型专案里,别人只想知道如何用程式,ㄧ点都不想看程式码。.h是跟别人说如何使用。大型专案里,程式码都在公司主机,也没有啥么好隐藏的。程式码都是共享的。
作者: Killercat (杀人猫™)   2014-09-29 09:26:00
对函式库的使用者来讲 能见度就仅止于.h对有原始码的使用者来讲 也不该让他们费心.h外的东西可见度跟linkage算是截然不同的两码子事情
作者: azureblaze (AzureBlaze)   2014-09-29 10:40:00
隐藏的用意是"你不需要看"而不是"不准你看"
作者: johnpage (johnpage)   2014-09-29 11:21:00
别太执著这点,现在做纯软件的都会被破解。做半软半硬的才是王道。
作者: shadow0326 (非议)   2014-09-29 16:07:00
可见度不只是想隐藏的问题 还有污染命名空间的问题
作者: askacis (ASKA)   2014-09-29 16:14:00
function 宣告没加static别人也可link,即使你没include只是说他提供的h档是开放出来给别人使用的API~
作者: carylorrk (carylorrk)   2014-09-30 13:53:00
不过我看网络上好像大部分是 visibility = linkage像是 wiki 写 static 影响 visibility XD?哦 好像也有 visibility = scope 的说法...(混乱

Links booklink

Contact Us: admin [ a t ] ucptt.com