今天在寫代碼的時(shí)候把之前用在51上的按鍵代碼移植過來,發(fā)現(xiàn)在調(diào)用數(shù)組的地方會(huì)出現(xiàn)標(biāo)紅并提示數(shù)組使用越界但是實(shí)際使用并沒有出現(xiàn)越界,后面我改成變量后仍然出現(xiàn)數(shù)組越界的提示。標(biāo)紅出不能調(diào)試且代碼效果貌似也無法順利實(shí)現(xiàn)。
上面是數(shù)組的定義和后面修改成變量后的提示
今天在寫代碼的時(shí)候把之前用在51上的按鍵代碼移植過來,發(fā)現(xiàn)在調(diào)用數(shù)組的地方會(huì)出現(xiàn)標(biāo)紅并提示數(shù)組使用越界但是實(shí)際使用并沒有出現(xiàn)越界,后面我改成變量后仍然出現(xiàn)數(shù)組越界的提示。標(biāo)紅出不能調(diào)試且代碼效果貌似也無法順利實(shí)現(xiàn)。
上面是數(shù)組的定義和后面修改成變量后的提示
最后那個(gè)截圖,254、255行語法應(yīng)該是有問題沒有用數(shù)組下標(biāo)訪問[3]而是_3?再說了[3]的數(shù)組上限是var[2]吧?
前面的截圖也有問題的話,有沒有可能數(shù)組沒有初始化?有沒有可能中括號(hào)不是ASCII的而是中文的中括號(hào)?
s.led也沒有看到你是如何聲明、定義、初始化的…
現(xiàn)在做modbus通訊一直用結(jié)構(gòu)體數(shù)組,也沒出現(xiàn)過類似問題,要不要關(guān)掉軟件重新打開有可能又不報(bào)錯(cuò)了呢?
最后的那個(gè)截圖是我為了確認(rèn)去掉數(shù)組用變量代替做的,就是把數(shù)組用變量代替,前面兩張是原來的數(shù)組的最后一張和前面兩張不是一起的或者說最后一張是前面兩張改的。數(shù)組的初始化的話結(jié)構(gòu)體的數(shù)組初始化應(yīng)該怎么做?本人小白還希望指點(diǎn)一下。最后結(jié)構(gòu)體的聲明和定義是我沒有說清楚現(xiàn)在補(bǔ)發(fā)。目前這個(gè)問題出現(xiàn)了有兩天了,因?yàn)闆]有影響到其他功能所以我都在調(diào)試其他的功能,中間也關(guān)過電腦但還是會(huì)出現(xiàn)。另外我也試過將數(shù)組移出來單獨(dú)做全局但是還是提示越界。
typedef?struct{ ????uint16_t?colour_r; ????uint16_t?colour_g; ????uint16_t?colour_b; ????uint16_t?colour_w; ????uint8_t?diy_mode;??????????????? ????uint8_t?rainbow_x;?????????????? ????uint8_t?rainbow_flag;?????????? ????uint8_t?menu_arrows;???????????? ????uint16_t?colour_r_pre; ????uint16_t?colour_g_pre; ????uint16_t?colour_b_pre; ????uint16_t?colour_w_pre; ????uint8_t?num_show_mode;??????????) ????uint8_t?menu_now_show;?????????? ????uint8_t?m_save_progVal;????????? ????uint8_t?m_key_stat_flag; ????uint8_t?m_key_long_flag; ????uint8_t?rainbow_run_tick;??????? ????uint8_t?rainbow_run_speed;?????? ????uint8_t?led_refresh_flag;??????? ????uint8_t?oled_refresh_flag;?????? ????uint8_t?led_rainbow_count[3];??? ????uint16_t?m_key_long_count[3]; }?LED_STRUCT; LED_STRUCT??s_led;//led操作結(jié)構(gòu)體
具體操作就是上面這樣在聲明了s_led后就直接使用了
后面實(shí)際測(cè)試沒有影響程序,但是debug不了并且隨著代碼的編寫換了一處地方。這個(gè)就沒有辦法避免嗎它一直標(biāo)紅在那
您好,您按照下圖清除一下,另外不能DEBUG應(yīng)該和這個(gè)無關(guān),詳細(xì)的debug出錯(cuò)信息和工程方便的話可以發(fā)送到郵箱yangy@wch.cn這邊來查找下問題。
typedef?struct?{ ????uint8_t????COIL[REG_COILS_SIZE?/?8+1]; ????uint8_t????DISC[REG_DISC_SIZE?/?8+1]; ????uint16_t???HOLD[REG_HOLDING_NREGS+1]; ????uint16_t???INPT[REG_INPUT_NREGS+1]; }DB_Slave; volatile?DB_Slave?DB1={0};
我這邊是這樣用的,沒發(fā)現(xiàn)有報(bào)錯(cuò),使用過程中也沒發(fā)現(xiàn)有啥問題。
因?yàn)樵?jīng)用過一個(gè)品牌的單片機(jī)在定義變量是沒有初始化就直接使用,查了很久才查出來沒有初始化的原因,現(xiàn)在定義變量都習(xí)慣直接初始化,安心放心舒心很多。
MRS有時(shí)候總是有些亂七八糟的問題很讓人無語的...
比如有時(shí)候好好的打開項(xiàng)目就一堆報(bào)錯(cuò),這時(shí)候關(guān)掉軟件重啟后再打開項(xiàng)目編譯又沒有報(bào)錯(cuò)了...
又比如仿真過程中如果突然卡死無響應(yīng),關(guān)掉軟件再開發(fā)現(xiàn)仿真還是有問題,所以現(xiàn)在都是用串口輸出log都盡量不用仿真....