[問題] 函式的原型宣告的地方(.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