作者:
nimura14 (陣內家的孩子)
2014-09-28 23:32:48開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux, GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
沒有
問題(Question):
小弟剛開始工作,第一次碰到大形的程式。
有一個問題不太清楚。
有看到專案中的.c檔,裡頭實作了一些函式;
但這些函式的原型部份宣告在同一隻.c檔裡,另一部份宣告在.h檔裡。
這樣做是有什麼特別的原因嗎?
補充說明(Supplement):
另外想問一下,對於初次接觸大型程式的新手。
有沒有推薦的書可以看?
總覺得以前大學唸的只是教你拌水泥..砌牆蓋房子要自己來..
就是把函式變成 private function,只能在同一.c中叫也就是abstraction (implementation hiding)的方法當然也有可能是作者沒有遵守coding convention
作者:
nimura14 (陣內家的孩子)
2014-09-28 23:40:00所以就是說這個.c檔裡實作的function,他願意給其他人用的,他就把原型宣告在.h裡,只給自己用的就宣告在.c囉?忘了說,謝謝1樓的回答!感恩!
因為實務上只會去include .h, 所以放在.c的正常來說是不會被看到的,你這樣想就對了。對C來講 宣告位置是限制可見度的唯一方法
作者:
carylorrk (carylorrk)
2014-09-29 05:02:00可見度?visibility 和 linkage 是同一種東西嗎?如果是的話,跟宣告位置應該沒有關係把XD
作者:
johnpage (johnpage)
2014-09-29 06:24:00在大型專案裡,別人只想知道如何用程式,ㄧ點都不想看程式碼。.h是跟別人說如何使用。大型專案裡,程式碼都在公司主機,也沒有啥麼好隱藏的。程式碼都是共享的。
對函式庫的使用者來講 能見度就僅止于.h對有原始碼的使用者來講 也不該讓他們費心.h外的東西可見度跟linkage算是截然不同的兩碼子事情
作者:
johnpage (johnpage)
2014-09-29 11:21:00別太執著這點,現在做純軟體的都會被破解。做半軟半硬的才是王道。
作者:
askacis (ASKA)
2014-09-29 16:14:00function 宣告沒加static別人也可link,即使你沒include只是說他提供的h檔是開放出來給別人使用的API~
作者:
carylorrk (carylorrk)
2014-09-30 13:53:00不過我看網路上好像大部分是 visibility = linkage像是 wiki 寫 static 影響 visibility XD?哦 好像也有 visibility = scope 的說法...(混亂