[問題] 編譯不過

看板C_and_CPP作者 (大笨鐘)時間8年前 (2018/01/13 20:15), 編輯推噓3(3015)
留言18則, 8人參與, 7年前最新討論串2/2 (看更多)
有數年沒寫程式了,最近要改一支別人寫的程式,遇到一些問題,不知可否解? 上層API有 API123(); API456(); API789(); API是其他sw廠商提供的,不能修改,也不會有修改的意願 全部的API都會在底層一直呼叫 SPI_READ() SPI_READ()是我們自己寫的,可以修改 因為API是純SW的寫法,會去SPI取固定位置、固定長度的資料,拿去做運算 造成API789()執行時間超級長,大概10秒 因為我已經知道他要的SPI資料的位置和長度, 我是想把資料先預讀搬到RAM中, 然後在SPI_READ()判斷, if(位置對 && 長度對), 去RAM搬資料,不實際執行底層SPI的運作 (偷時間) 要預存的RAM大小~1KB, 對斤斤計較的MCU來說,RAM最好只在需要的時間再開起來 所以RAM只希望在API789()前開起來,API789()結束後close和free掉 現在的問題在我在SPI_READ()中,寫了if的判斷式 但是可能在執行API123()時, 寫的if判斷式中,RAM的變數或變數指標,在那個時間點並不存在 造成編譯一直不過 總結: 我只希望在API789()前後,才讓RAM有預讀的資料 讓API789()裏頭呼叫SPI_READ()時,if成立,才去拿預讀資料 其他API123(), API234()執行呼叫SPI_READ()時,我不care 有點想不出如何解,希望各位指點一下,感謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.32.240.169 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1515845741.A.6B2.html

01/13 20:26, 8年前 , 1F
這問題很常見,用API000()或API9527()就好了
01/13 20:26, 1F

01/13 21:11, 8年前 , 2F
請問b大,這是什麼意思?
01/13 21:11, 2F

01/14 00:34, 8年前 , 3F
在API789外面包一層,處理記憶體。
01/14 00:34, 3F

01/14 09:09, 8年前 , 4F
外面包一層? 可是API還是會從SPI_READ()拿資料
01/14 09:09, 4F

01/14 09:11, 8年前 , 5F
API要讀的位置和數量非常多,我只是想把重覆性比較高的
01/14 09:11, 5F

01/14 09:11, 8年前 , 6F
先搬到RSM,降低SPI執行的loading
01/14 09:11, 6F

01/14 13:17, 8年前 , 7F
多判斷個來自API789、或是多個全域變數紀錄你這塊catch
01/14 13:17, 7F

01/14 13:17, 8年前 , 8F
有沒有啟用呢?
01/14 13:17, 8F

01/14 13:19, 8年前 , 9F
是說,compiler會知道你RAM有沒有開起來?
01/14 13:19, 9F

01/14 22:44, 8年前 , 10F
把SPI寫成MACRO然後用__function__判斷?
01/14 22:44, 10F

01/14 22:46, 8年前 , 11F
感覺你很無奈,應該叫APIXXX改code才對XD
01/14 22:46, 11F

01/14 22:47, 8年前 , 12F
*把SPA_READ寫成MACRO
01/14 22:47, 12F

01/15 18:31, 8年前 , 13F
先判斷指標是否為 nullptr ?
01/15 18:31, 13F

01/15 22:52, 8年前 , 14F
F大,目前改成用malloc和判斷NULL來實作,暫時可解~
01/15 22:52, 14F

01/16 10:00, 8年前 , 15F
如果連編譯不過就是scope的問題吧 程式根本還沒開始跑阿
01/16 10:00, 15F

01/29 21:36, 7年前 , 16F
compile不過跟程式的邏輯無關,看內文我猜是先reference
01/29 21:36, 16F

01/29 21:36, 7年前 , 17F
了未宣告的變數
01/29 21:36, 17F

01/29 21:36, 7年前 , 18F
就是reference的地方還沒宣告。最後你的error也po上來
01/29 21:36, 18F
文章代碼(AID): #1QMVXjQo (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1QMVXjQo (C_and_CPP)