keil編譯stm32程序出現declaration may not appear after executable statement in block 錯誤 解決辦法


int32_t Data(uint8_t * data, uint32_t len)
{
int32_t ret = 0;
uint8_t tx_buf[MAX_PACKAGE_LEN];

if(NULL == data)
{
printf("[Error] Data Error \n");
return (-1);
}
uint8_t *pTxBuf = tx_buf;
uint16_t data_len = 6+len;

/*****省略程序******/

 

出現下面錯誤 error:  #268: declaration may not appear after executable statement in block

 error: #268: declaration may not appear after executable statement in block
uint8_t *pTxBuf = tx_buf;
error: #268: declaration may not appear after executable statement in block
uint16_t data_len = 6+len;

解決辦法:變量聲明不允許出現在語句之后.這種在語句之后聲明變量的方式,c++允許,現在的很多c編譯器也允許。
最早的c是不許這么寫的,要求所有的局部變量必須在函數開頭聲明。
把uint8_t *pTxBuf = tx_buf;uint16_t data_len = 6+len;這兩行移到函數最開頭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM