| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
.h和.c文件有什么不同啊,到底? | 
  
| 作者:guorock 欄目:單片機(jī) | 
我現(xiàn)在是把實(shí)現(xiàn)特定功能的子函數(shù)都放在一個(gè).h文件中, 比如對(duì)FLASH進(jìn)行讀寫操作的子函數(shù),我都把他們放在flashfunction.h中,對(duì)液晶進(jìn)行操作的子函數(shù)都放在lcdfunction.h中。。。。然后在包含main()的.c文件中,把這些頭文件都包含近來。 但是聽有的人說.h文件一般都是放些全局變量之類的東西,而象上面的flashfunction和lcdfunction最好是以.c作后綴。 很悶納! 問問程序高手們,是不是一般都習(xí)慣這么做,還是有別的什么說法???  | 
  
| 2樓: | >>參與討論 | 
| 作者: 農(nóng)民講習(xí)所 于 2005/11/23 17:53:00 發(fā)布:
         .h文件放的是.c文件提供外部的變量、函數(shù)的說明。 還會(huì)有些常數(shù)定義、宏定義。僅此而已。不應(yīng)該包含函數(shù)具體代碼。 可以翻翻reg51.h  | 
  |
| 3樓: | >>參與討論 | 
| 作者: chenzhen 于 2005/11/23 18:12:00 發(fā)布:
         一般.H文件可以直接放在.C文件中 一般在看到的資料中介紹了.H和.C文件中的應(yīng)用。h文件是頭包涵文件,可以直接把內(nèi)容放在.C中。但是為了管理方便,還是分開了部分功能定義,數(shù)據(jù)等放在.H文件中。  | 
  |
| 4樓: | >>參與討論 | 
| 作者: jinbos 于 2005/11/24 16:24:00 發(fā)布:
         頂一下  | 
  |
| 5樓: | >>參與討論 | 
| 作者: gbchang 于 2005/11/24 19:02:00 發(fā)布:
         我程序少就不分,程序多就分,沒仔細(xì)想有什么  | 
  |
| 6樓: | >>參與討論 | 
| 作者: 李冬發(fā) 于 2005/11/24 19:22:00 發(fā)布:
         在頭文件中也不用有變量的實(shí)際定義 簽名: ![]()  | 
  |
| 7樓: | >>參與討論 | 
| 作者: computer00 于 2005/11/24 19:50:00 發(fā)布:
         這樣比較難說清楚。建議樓主找?guī)讉(gè)比較規(guī)范的C工程來看看 一般來說,一個(gè).C文件對(duì)應(yīng)這一個(gè).H文件,.H文件是用來給別人引用的,所以里面只有聲明, 不能有定義,定義是放在.C文件中。有點(diǎn)類似windows中的快捷方式,自己并沒有實(shí)體,只 是指明有這么一個(gè)東西而已(也許比喻不太恰當(dāng))。另外.H文件中也可用來存放一些常量以 及宏等等。 PS:冬發(fā)兄,你弄個(gè)假簽名也就算了,為啥要用跟俺一樣的簽名照片啊,小心俺到流星那去 告你侵犯?jìng)(gè)人簽名權(quán)。。。。。。  | 
  |
| 8樓: | >>參與討論 | 
| 作者: ehu 于 2005/11/24 22:40:00 發(fā)布:
         學(xué)習(xí) 我也是一頭霧水,看了樓上兄弟的發(fā)言,有所明白了 3克油  | 
  |
| 9樓: | >>參與討論 | 
| 作者: hotpower 于 2005/11/24 23:29:00 發(fā)布:
         暈,侵權(quán)有理.簽名無效 
  | 
  |
| 10樓: | >>參與討論 | 
| 作者: computer00 于 2005/11/24 23:53:00 發(fā)布:
         我倒……這世道,hotpower大叔,等我再玩幾天,就告訴你怎樣玩法 這樣總行了吧,快暈死了……  | 
  |
| 11樓: | >>參與討論 | 
| 作者: hotpower 于 2005/11/25 0:07:00 發(fā)布:
         哈哈,我快郁悶死了,見"他"翻書的樣子就頭暈 
  | 
  |
| 12樓: | >>參與討論 | 
| 作者: awey 于 2005/11/25 0:08:00 發(fā)布:
         學(xué)習(xí)了 簽名: ![]()  | 
  |
| 13樓: | >>參與討論 | 
| 作者: hotpower 于 2005/11/25 0:12:00 發(fā)布:
         就我笨  | 
  |
| 14樓: | >>參與討論 | 
| 作者: awey 于 2005/11/25 0:22:00 發(fā)布:
         再來一個(gè) 簽名: ![]()  | 
  |
| 15樓: | >>參與討論 | 
| 作者: yulko 于 2005/11/25 9:11:00 發(fā)布:
         哦  | 
  |
| 16樓: | >>參與討論 | 
| 作者: guorock 于 2005/11/25 9:43:00 發(fā)布:
         明白了!各位大蝦LOOK下,是不是這樣? 模塊劃分的"劃"是規(guī)劃的意思,意指怎樣合理的將一個(gè)很大的軟件劃分為一系列功能獨(dú)立的部分合作完成系統(tǒng)的需求。C語言作為一種結(jié)構(gòu)化的程序設(shè)計(jì)語言,在模塊的劃分上主要依據(jù)功能(依功能進(jìn)行劃分在面向?qū)ο笤O(shè)計(jì)中成為一個(gè)錯(cuò)誤,牛頓定律遇到了相對(duì)論),C語言模塊化程序設(shè)計(jì)需理解如下概念: (1) 模塊即是一個(gè).c文件和一個(gè).h文件的結(jié)合,頭文件(.h)中是對(duì)于該模塊接口的聲明; (2) 某模塊提供給其它模塊調(diào)用的外部函數(shù)及數(shù)據(jù)需在.h中文件中冠以extern關(guān)鍵字聲明; (3) 模塊內(nèi)的函數(shù)和全局變量需在.c文件開頭冠以static關(guān)鍵字聲明; (4) 永遠(yuǎn)不要在.h文件中定義變量!定義變量和聲明變量的區(qū)別在于定義會(huì)產(chǎn)生內(nèi)存分配的操作,是匯編階段的概念;而聲明則只是告訴包含該聲明的模塊在連接階段從其它模塊尋找外部函數(shù)和變量。如: /*module1.h*/ int a = 5; /* 在模塊1的.h文件中定義int a */ /*module1 .c*/ #include "module1.h" /* 在模塊1中包含模塊1的.h文件 */ /*module2 .c*/ #include "module1.h" /* 在模塊2中包含模塊1的.h文件 */ /*module3 .c*/ #include "module1.h" /* 在模塊3中包含模塊1的.h文件 */ 以上程序的結(jié)果是在模塊1、2、3中都定義了整型變量a,a在不同的模塊中對(duì)應(yīng)不同的地址單元,這個(gè)世界上從來不需要這樣的程序。正確的做法是: /*module1.h*/ extern int a; /* 在模塊1的.h文件中聲明int a */ /*module1 .c*/ #include "module1.h" /* 在模塊1中包含模塊1的.h文件 */int a = 5; /* 在模塊1的.c文件中定義int a */ /*module2 .c*/ #include "module1.h" /* 在模塊2中包含模塊1的.h文件 */ /*module3 .c*/ #include "module1.h" /* 在模塊3中包含模塊1的.h文件 */ 這樣如果模塊1、2、3操作a的話,對(duì)應(yīng)的是同一片內(nèi)存單元。  * - 本貼最后修改時(shí)間:2005-11-25 9:44:30 修改者:guorock  | 
  |
| 17樓: | >>參與討論 | 
| 作者: computer00 于 2005/11/25 10:51:00 發(fā)布:
         哈哈,對(duì)了,歸納得真不錯(cuò)。  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào)  |