Keil c 如何避免區域變數重疊?? |
缺席
|
mihopaul
一般會員 發表:25 回覆:59 積分:16 註冊:2002-03-17 發送簡訊給我 |
Hi all
我寫了個程式,大約是以下的內容 test.c void a(U8 val) { U8 ch=0; dev[ch].fun1(val); <-----這個會叫用下面的 b 函式 dev[ch].fun2(val); <---執行到這出錯 } void b( U8 val) { U8 dummy = val *5; writeReg[0x55AA]= dummy; } 當我執行 dev[ch].fun1(val) 之後,不應該被改變的 ch 變數卻被改變了 後來發現 ch 變數的memoery 位置 是 0x40 ,而且跟 Dummy 這個變數一樣 所以當Dummy被改變了,ch 也被改變 查看 m51 檔 DATA 0018H 0028H UNIT ?DT?Test 正好是邊界 請問我該如何避免呢 ?? 此外我要如何得知 所有的區域變數被存放在那個位置?? 謝謝 |
mihopaul
一般會員 發表:25 回覆:59 積分:16 註冊:2002-03-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |