|
|||||||||||
| 技術(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 |
熟悉C語(yǔ)言宏定義的請(qǐng)進(jìn)! |
| 作者:linjing 欄目:單片機(jī) |
現(xiàn)在需要一個(gè)在液晶上顯示格式串的程序,原型如下 MyPrintf( uint xy, const CHAR *fmt, ... ); 即在通常的顯示格式串前加上一個(gè)坐標(biāo)指示。 以前是使用函數(shù)寫(xiě)的,但在KeilC中可變長(zhǎng)度的參數(shù)列表占用太多內(nèi)存空間, 希望能定義成宏定義,可能的效果如下: extern CHAR sbuffer[MAX+1]; #define MyPrintf( xy, fmt, ... ) { sprintf( sbuffer, fmt, ... ); MyPuts( xy, sbuffer ); } 但很明顯這種定義方法是行不通的,有沒(méi)知道標(biāo)準(zhǔn)答案的? |
| 2樓: | >>參與討論 |
| 作者: yanfengzhu 于 2005/5/15 17:43:00 發(fā)布:
如果不是太復(fù)雜就自己寫(xiě)一個(gè)嘍 |
|
| 3樓: | >>參與討論 |
| 作者: mVA 于 2005/5/16 0:28:00 發(fā)布:
好象沒(méi)什么好辦法 |
|
| 4樓: | >>參與討論 |
| 作者: linjing 于 2005/5/16 19:15:00 發(fā)布:
繼續(xù)頂! 自己寫(xiě)子程序倒不是很復(fù)雜,就是占用RAM太多,無(wú)法接受 |
|
| 5樓: | >>參與討論 |
| 作者: li3 于 2005/5/17 11:41:00 發(fā)布:
如果用宏,只會(huì)占用更多的空間. |
|
| 6樓: | >>參與討論 |
| 作者: xwj 于 2005/5/17 12:17:00 發(fā)布:
那就用子程序調(diào)用啊,也只多2字節(jié)的堆棧 extern CHAR sbuffer[MAX+1]; MyPrintf( uint xy, const CHAR *fmt, ... ) { sprintf( sbuffer, fmt, ... ); MyPuts( xy, sbuffer ); } |
|
| 7樓: | >>參與討論 |
| 作者: linjing 于 2005/5/18 11:28:00 發(fā)布:
to xwj, 編譯就不能通過(guò)的! |
|
| 8樓: | >>參與討論 |
| 作者: taoest 于 2005/5/18 14:54:00 發(fā)布:
樓主的是可變參數(shù)函數(shù) 樓主的是可變參數(shù)函數(shù), 這函數(shù)就那德性,耗內(nèi)存。 不用他就是了。調(diào)用的時(shí)候用兩行來(lái)寫(xiě)。 |
|
| 9樓: | >>參與討論 |
| 作者: linjing 于 2005/5/20 10:40:00 發(fā)布:
說(shuō)的是啊:( 一言中的,就是因?yàn)樘膬?nèi)存,而且消耗的是DATA部分,一個(gè)函數(shù)調(diào)用下來(lái),再定義局部變量的時(shí)候就經(jīng)常捉襟見(jiàn)肘了:( 現(xiàn)在沒(méi)辦法就是用兩條語(yǔ)句寫(xiě)的,可是有好多程序以前用的是我前面說(shuō)到的那個(gè)函數(shù)原型,現(xiàn)在都要重新寫(xiě)過(guò),十分痛苦! |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |