Keil-MDK版本中的C99 mode功能

  • Post author:
  • Post category:其他


此文章针对编译器选择为V5.06 update 7,如下图

使用此编译器写代码时,定义变量的位置不恰当也会编译出错,如下所示:

  • 定义变量位置在头部,没有错误:
int main(void)
{
	int a;
	int b;   //定义变量在头部
	a=10;
	b=1;
	while(1)
	{
		
	}
}

这里两个警告是因为变量定义了没有使用



这里两个警告是因为变量定义了没有使用

  • 定义变量位置不在头部,出错:
int main(void)
{
	int a;
	a=10;     //执行语句之后定义变量b
	int b;
	b=1;
	while(1)
	{
		
	}
}

在这里插入图片描述



错误说的是声明int b不能出现在可执行语句之后



出错原因是由于默认编译器没有选择C99标准,这样的话定义变量只能在程序头部,否则会报错。那我们可以选择C99标准,只需如下操作:

选择好之后,定义变量的位置就不会被约束了,如下:

int main(void)
{
	int a;
	a=10;     //执行语句之后定义变量b
	int b;
	b=1;
	while(1)
	{
		
	}
}

在这里插入图片描述

—————————————————————-2022.9.29————————————————————————–

最新版本MDK537(及以后)可能上述方法还是不行。


如果发现还是会出错,请取消勾选C99,勾选 GUN extensions即可



版权声明:本文为weixin_44775687原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。