KeilMDK 編譯報錯:error: #268: declaration may not appear after executable statement in block

KeilMDK STM32 uCOS-II 編譯報錯:error: #268: declaration may not appear after executable statement in block

編譯包含下面代碼的文件

/* 
 * 函數名:Task_USART1
 * 描述  : 任務創建函數
 * 輸入  :*p_arg
 * 輸出  : 無
*/
void Task_USART1(void *p_arg)
{       
    (void)p_arg;
  
    INT8U err;
    INT8U *msg;
      
    while(1)
    {
          
    }
}

編譯結果:
..\APP\app.c(51): error:  #268: declaration may not appear after executable statement in block
分析問題:
這個錯誤的原因是對於變量的聲明不能放在可執行語句後面,必須在主函數開頭聲明變量。在程序中聲明一個變量時,需要在可執行語句之前聲明,否則會出現以上錯誤。

更正代碼如下:

/* 
 * 函數名:Task_USART1
 * 描述  : 任務創建函數
 * 輸入  :*p_arg
 * 輸出  : 無
*/
void Task_USART1(void *p_arg)
{       
    INT8U err;
    INT8U *msg;
      
    (void)p_arg;
      
    while(1)
    {
          
    }
}
在uCOS-II中(void)p_arg;
  'p_arg' 並沒有用到,防止編譯器提示警告,應該放在變量聲明之後。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章