stm32:error: #268: declaration may not appear after executable statement in block

今天写中断函数时报错:
error: #268: declaration may not appear after executable statement in block
谷歌翻译直译过来就是
声明可能不会出现在块中的可执行语句之后
stm32:error: #268: declaration may not appear after executable statement in block

其实语句没有什么问题,但是
EXTI_InitTypeDef EXTI_Struct;
这句话的位置有错误,应该放在大括号后面
stm32:error: #268: declaration may not appear after executable statement in block

32的库中,结构体大部分都加的typedef,意味着要重新声明,可以理解为EXTI_InitTypeDef可以重新定义变量,然后通过 “.” 访问结构体中的内容。类似于typedef unsigned char uchar ;uchar= ** ;
C语言规定变量声明必须在函数开头,也就是大括号之后。
EXTI_InitTypeDef EXTI_Struct; 这句话相当于在声明变量,所以放在函数中会报错。
MDK5默认的还是C89标准,限定了声明变量的位置。在C99标准中则没有此限制,如果想开启C99标准则可通过打开魔术棒中的C/C++面板,勾选“C99Mode”。

stm32:error: #268: declaration may not appear after executable statement in block