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' 並沒有用到,防止編譯器提示警告,應該放在變量聲明之後。