|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
一個奇怪的問題,把一個C51文件拆分編譯后比原來大很多! |
| 作者:hqfmcu201 欄目:單片機 |
把一個C51文件拆分為幾個不同文件編譯后,比沒有拆分前大很多.請各位大俠幫忙。困惑:( 不知是什么原因。 |
| 2樓: | >>參與討論 |
| 作者: 用戶 于 2005/11/29 22:40:00 發(fā)布:
曾折分過一個2000行的文件,hex文件沒什么變動. |
|
| 3樓: | >>參與討論 |
| 作者: hqfmcu201 于 2005/11/30 11:39:00 發(fā)布:
哎,我的程序有近15000行,有點多,我想拆了,沒想HEX一點點變大 實在搞不懂咋會事。能看到data數(shù)據(jù)量每拆分一點就變大,code數(shù)據(jù)量也一點一點變大。我的一些程序用了較多的全局變量,不知是否因為這個原因呢? |
|
| 4樓: | >>參與討論 |
| 作者: wjc3k 于 2005/11/30 12:14:00 發(fā)布:
在主程序文件里面申明. 在其它文件里面標識變量是外部的. 從編譯原理的角度來說,是不會變大的. |
|
| 5樓: | >>參與討論 |
| 作者: mabaoqiu 于 2005/11/30 17:40:00 發(fā)布:
應(yīng)該不會! 看看你的編譯選項! |
|
| 6樓: | >>參與討論 |
| 作者: ketp 于 2005/11/30 18:46:00 發(fā)布:
大一點是正常的. 搞個小程序看看編譯后的匯編就清楚了 |
|
| 7樓: | >>參與討論 |
| 作者: 將軍令 于 2005/12/1 13:38:00 發(fā)布:
應(yīng)該是不會,不知道你怎么拆的 |
|
| 8樓: | >>參與討論 |
| 作者: hqfmcu201 于 2005/12/1 18:56:00 發(fā)布:
我是把液晶顯示和通迅部分的程序單獨從主程序中拆分出來, 分成幾個C文件。并在頭文件里聲明單個C文件的函數(shù). // 我采用的方法如下: // 把以前的一個大程序拆分成一個主程序Main.c,一個液晶顯示程序Lcm.c, //一個通迅處理程序Scom.c,并把這些文件加入工程中。其中在主程序里包 //含Lcm.c的頭文件bb.h, Scom.c的頭文件cc.h,以使它們聯(lián)系起來。 //這個模式是我參考一個完整的工程項目來這樣拆分的。 //在Lcm.c中引用Main.c的變量時,我進行了extern的外部聲明,也沒有出錯。 //若Main.c中引用了Lcm.c中的變量時,也進行了extern的外部聲明,也沒出錯。 //現(xiàn)在的問題是把原先的一個大的C文件拆分為幾個C文件編譯后要比以前的代碼 //量大得多。實在搞不懂,不應(yīng)該這樣的啊。程序框架如下: // 主函數(shù)Main.c : #include "aa.h" #include "bb.h" //包含Lcm.c頭文件 #include "cc.h" //包含Scom.c頭文件 . . . void main() { . . . JJJ(); //來自于Lcm.c文件 KKK(); //來源于Scom.c文件 . . . } //------------------------ //Lcm.c文件 #include "aa.h" #inlude "bb.h" uchar CharLen; //變量定義 . . . void JJJ() //函數(shù) { . . . } //---------------------------- Lcm.c的頭文件是 bb.h, bb.h如下: #ifndef _bb_h_ #define _bb_h_ #define MMM 55 //常量宏定義 . . . extern void JJJ(); //函數(shù)聲明 . . . #endif //----------------------------- Scom.c文件 #include "aa.h" #include "cc.h" uchar SeriDataLen; //變量定義 . . . void KKK() //函數(shù) { . . . } //---------------------------- Scom.c文件頭文件 cc.h #ifndef _cc_h_ #define _cc_h_ #define WWW 54 //常量聲明 . . . extern void KKK(); //聲明函數(shù) . . . #endif //------------------------ 請教各位大俠,到底是什么原因造成代碼長度因文件拆分重編譯后增加呢? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |