OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2816|回复: 4

下面这个ucgui中的函数是不是不符合C语言标准啊?

[复制链接]

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2015-12-6
在线时间
15 小时
发表于 2016-6-5 09:48:32 | 显示全部楼层 |阅读模式
最近在使用ucgui时,因为跟踪一个功能函数,无意中看到图片中的那个函数,函数中有int key的定义,我记得C语言里是不允许在函数中间定义变量的,为何ucgui这里可以呢?百思不得其解。请大神帮忙指点指点,谢谢啦…………
360截图20160605095112770.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

711

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
11924
金钱
11924
注册时间
2015-11-5
在线时间
2086 小时
发表于 2016-6-5 10:05:45 | 显示全部楼层
在条件语句里面临时压栈是允许的,我经常这么干
回复 支持 反对

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-6-5 10:10:54 | 显示全部楼层
谁说不允许在函数中间定义变量了?

不管是C99还是非C99,
变量可以定义在函数外部,称为外部变量。
变量也可以定义在语句块内(Block,即大括号里面)。

若不开启C99模式,变量如果放在语句块内,必须在语句块最前面,

C99的话任意位置亦可
坚决不用寄存器,拒绝重复造轮子。
回复 支持 反对

使用道具 举报

9

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2016-6-5
在线时间
27 小时
发表于 2016-6-5 10:18:31 | 显示全部楼层
这个和C语言的标准有关系吧,我记得C99就允许这么写,只要是在可执行语句前就行了
回复 支持 反对

使用道具 举报

9

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2015-12-6
在线时间
15 小时
 楼主| 发表于 2016-6-5 11:05:02 | 显示全部楼层
非常感谢大家的指点,尤其是周末回复还辣么快,再次感谢。我按照大家的指点,亲自在VC上做了简单的C程序测试,确实是可以的。就像4楼说的,在C中,只要变量定义在真正的执行语句前面,那么不管是定义在函数开头,还是中间的大括号语句块中,都是可以的,否则就不行。对于C++,就像3楼说的,变量定义可以在任意位置。贴个C测试程序,C:\Users\Administrator\Desktop\360.JPG让大家见笑了,哈哈哈
360.jpg
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 19:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表