|
|||||||||||
| 技術(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問題: acc += *((u16_t *)dataptr)++; 請(qǐng)教 |
| 作者:yddoo 欄目:嵌入式系統(tǒng) |
lwip中有這樣一段代碼: static u32_t chksum(void *dataptr, int len) { u32_t acc; for(acc = 0; len > 1; len -= 2) { acc += *((u16_t *)dataptr)++;/*這有問題嗎???*/ } 。。。。。 } 大師級(jí)人物寫的程序,不過我的IAR不認(rèn)同這種寫法。不過奇怪的是: 我借用UCGUI的那個(gè)例子(VC6.0的)寫了個(gè)類似的程序編譯調(diào)試結(jié)果理想 但我同事在他自己的一個(gè)工程里寫同樣的代碼, 就是不行。 吾甚為不解。 期高人解惑。 感激涕零 |
| 2樓: | >>參與討論 |
| 作者: coke 于 2005/12/29 10:15:00 發(fā)布:
RE acc += *((u16_t *)dataptr)++; ////////// 1.應(yīng)該是先將抽象型指針dataptr轉(zhuǎn)換成一個(gè)u16_t形式的指針.該指針是指向u16_t型數(shù)據(jù)(從命名來看應(yīng)該是16位數(shù)據(jù)). 2.將acc加上dataptr指針?biāo)傅臄?shù)據(jù). 然后指針加一(指向下一個(gè)u16_t數(shù)據(jù)); 從程序看.len應(yīng)該是指8位數(shù)據(jù)的個(gè)數(shù). 由于指針是16位數(shù)據(jù). 所以每次數(shù)據(jù)疊加后. 個(gè)數(shù)要減2. |
|
| 3樓: | >>參與討論 |
| 作者: 陳遠(yuǎn)征 于 2005/12/29 10:53:00 發(fā)布:
這種大師欠扁! 現(xiàn)在的編寫程序的時(shí)候,大多正規(guī)的公司都禁止這種復(fù)雜的表達(dá)方式。 缺點(diǎn)很明顯:不利于管理和移交。 |
|
| 4樓: | >>參與討論 |
| 作者: yddoo 于 2005/12/29 11:17:00 發(fā)布:
作者也覺察到這個(gè)可能的問題 問題已不是問題! 昨天找更高版本的lwip(lwip1.10) 發(fā)現(xiàn)這句或類似這樣寫的已改為兩句代碼實(shí)現(xiàn)。 我覺得作者也覺察到這個(gè)可能的問題了(possible problem) |
|
| 5樓: | >>參與討論 |
| 作者: 豬一樣理想 于 2006/1/4 22:15:00 發(fā)布:
這個(gè)語(yǔ)句遠(yuǎn)沒有難到難以理解的程度 如果哪位覺得理解有問題,我以為你應(yīng)該再回學(xué)校學(xué)習(xí)。 |
|
| 6樓: | >>參與討論 |
| 作者: 溜溜 于 2006/1/5 10:39:00 發(fā)布:
但是 如果我們只是理解一下,想當(dāng)然的認(rèn)為是對(duì)的,問題就來了 一般來說我們的理解應(yīng)當(dāng)說是一樣,不過如果你編譯一下或執(zhí)行一下,似乎結(jié)果 不一定如我們想象,人家不就是說編譯器不認(rèn)這種寫法嗎? 你是否是與編譯器較真我 偏要這么寫,氣死編譯器,最后你給氣死了。 一 * - 本貼最后修改時(shí)間:2006-1-5 10:40:32 修改者:溜溜 |
|
| 7樓: | >>參與討論 |
| 作者: John_Lee 于 2006/1/5 22:08:00 發(fā)布:
同意 豬一樣理想 這種表達(dá)式是相當(dāng)初級(jí)的! |
|
| 8樓: | >>參與討論 |
| 作者: yddoo 于 2006/1/6 10:26:00 發(fā)布:
較上真了??呵呵 不是說這句有多難理解。 我是說IAR 不認(rèn)可這種寫法,但不奇怪 可是同樣的VC 兩個(gè)不同工程,編譯,一個(gè)可以,一個(gè)不可以。 可能是有什么C 標(biāo)準(zhǔn)的設(shè)置,早期的是支持這么寫的好像是這樣 注:VC 幾乎不會(huì)用 |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |