环境:MDK
问题:编译后报错
错误信息:
#268: declaration may not appear after executable statement
报错代码:
#include<stdio.h>
#include<test.h>
int i=1;
int main()
{
i++;
volatile int a=1;
volatile int b=2;
int c=3;
int d=4;
int e=5;
c=func(a,b);
return 0;
}
分析:
报错内容为“声明可能不会出现在块中的可执行语句之后”,意思是在上述代码中“i++;”是可执行语句,在这后面定义了5个局部变量,这种写法不对,改变写法即可。
还有一个原因就是编译没有使用C99 Mode,就不支持声明在任意位置的写法。(参考文章的评论区提出的解决办法)
解决办法:
1.将5个局部变量的声明放在“i++;”前面,如下:
//此处省略
volatile int a=1;
volatile int b=2;
int c=3;
int d=4;
int e=5;
i++;
//此处省略
2.无需修改代码,打开MDK,点击魔术棒,点击C/C++,在Language/Code Generation栏勾选“C99 Mode”,如下:
参考资料:
https://blog.csdn.net/wuyuzun/article/details/95889306