最近在MSP430G2553(一款微控制器)上寫程序,用到了stdio.h里的sprintf函數,其實老發現有錯誤,后來單步調試發現當我運行sprintf函數第三次的,有幾個全局變量的值被改變了,第一感覺就是sprintf使什么東西溢出了,覆蓋了原先的數據。我想問的問題是:1、就是標題。2、遇到這種問題時想要不上知乎獨立解決這個問題(計算機工作原理?編譯原理?)需要哪些知識,往大家推薦點書或者名詞我索引索引。還有如果單純問問題1,那我就不會在知乎問了。給出詳細信息:我在另一個文件a.h中定義了//模式枚舉體typedefenum{ConstVolMode=0,ConstCurMode}ModeDef;//模式枚舉體externModeDefConstMode;在a.c里我初始化為ModeDefConstMode=ConstVolMode;然后在另一個文件b.c中include了a.h可是我運行的時候發現執行到一句的時候ConstMode的值被改變成一個莫名其妙的量。當我執行到sprintf(Strline3,"輸出電流:%.3fA",ADC_FiltedValue[1]);時我跳到了匯編內運行。單步跳到00D9DE處,此時ConstMode的值還是ConstVolMode,截了個圖,按下一步得到下圖。這里很明顯ConstMode的值被改成了一個奇怪的值。
上一篇ARPG單機游戲
下一篇華為筆記本如何下載驅動