提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
STM32&C语言学习笔记。今天学习到按键输出控制。好久不用C语言了犯了几个低级错误,在此记录一下_。
提示:以下是本篇文章正文内容,下面案例可供参考
一、error: #268: declaration may not appear after executable statement in block?
对于变量的声明不能放在可执行语句后面,必须在主函数开头声明变量。
int main()
{
LED_Init();
delay_init();
BEEP_Init();
KEY_Init();
u8 KEYnum = 0;
}
这里把变量的定义放在了初始化函数后面,出现了错误268
2error: #18: expected a “)”/error:if statement has empty body
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))
{
delay_ms(10);
key_up = 0;
if(KEY0==1)return KEY0_PRES;
else if(KEY1==1)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES;
}else if(WK_UP==0 && KEY1==1 && KEY0==1)key_up = 1;
return 0;
这个错误找了半个多小时真是麻了啊!
报错显示if(key_up&&(KEY00||KEY10||WK_UP==1))这一行
expected a “)” 我???看的怀疑自己眼花了,原因居然是.h文件里的宏定义后面错加了分号。
那么为什么会报这个expected a ")"错误呢,或者这个错误if statement has empty body,是因为宏定义是字符串的替换,我们把A宏定义为B,在B的最后加分号相当于把A定义为“B;”,出现混乱,在本次的if语句情况下就出现了一连串的需要括号和if条件后为空执行情况。
本文含有隐藏内容,请 开通VIP 后查看