搜索
bottom↓
回复: 17

发现keil5支持C++那种编程风格,记得以前keil4是不行的

[复制链接]

出0入0汤圆

发表于 2023-5-13 20:31:26 | 显示全部楼层 |阅读模式
比如

for(int i=0;i<1024;i++)

这种需要使用变量的时候,再定义变量,记得以前keil4 .c文件里面是直接报错的

而keil5可以在任意位置,定义一个新变量,像C++那样。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2023-5-13 21:11:47 来自手机 | 显示全部楼层
有一次程序出了奇怪的问题之后再也不敢这样做了??

出0入4汤圆

发表于 2023-5-13 21:18:27 来自手机 | 显示全部楼层
这种写法所声明变量的作用域只在for语句之内吧?如果是的话很容易与函数开头的声明变量搞混。

出50入8汤圆

发表于 2023-5-13 21:19:46 | 显示全部楼层
这是C99标准增加的特性

出0入0汤圆

 楼主| 发表于 2023-5-13 21:22:04 | 显示全部楼层
Landmark 发表于 2023-5-13 21:18
这种写法所声明变量的作用域只在for语句之内吧?如果是的话很容易与函数开头的声明变量搞混。 ...
(引用自3楼)

既然已经支持任意位置申明变量了。

那就不需要在函数开头放任何申明了。

哪个地方需要用到变量,就在哪个地方直接申明,作用域也仅限于后面并截至于后面对应的花括号。

跟C++写法完全一样了。

出20入25汤圆

发表于 2023-5-13 21:31:31 来自手机 | 显示全部楼层
KEIL4,也可以的,C++设置里加入C99

出0入442汤圆

发表于 2023-5-13 21:49:29 来自手机 | 显示全部楼层
xuekcd 发表于 2023-5-13 21:11
有一次程序出了奇怪的问题之后再也不敢这样做了??
(引用自2楼)

哈哈,新特性再烂也是要用的。原始c语法太难用了。

奇怪的问题确实经常遇到。。有一个软件bug,返回值总是会时不时坏掉,我调了几个月未果,主要是绝大多数(4个9以上)时间都能正常要作,于是没有管它了。突然有一回测试新功能时它开始出错了。用到手动触发模式时,它每4张图丢掉1张。。。。查了半天,最后总算找到原因了----一个大函数里面的一段代码里面重新定义了一个state,然后那个state是在这段代码里面更新的。。。。。。

出590入1001汤圆

发表于 2023-5-13 21:56:19 | 显示全部楼层
感觉至少5/6年前都有了,C99模式,可以在局部直接定义变量,用了很久了,很好用。

出0入0汤圆

 楼主| 发表于 2023-5-13 22:03:57 | 显示全部楼层
SUPER_CRJ 发表于 2023-5-13 21:56
感觉至少5/6年前都有了,C99模式,可以在局部直接定义变量,用了很久了,很好用。 ...
(引用自8楼)

我是好多年没写代码了。

之前一直守着keil4,没更新到keil5,所以不知道这回事。

出425入0汤圆

发表于 2023-5-14 08:07:02 | 显示全部楼层
这种C++风格很好用。用好多年了。

出0入4汤圆

发表于 2023-5-14 08:31:48 来自手机 | 显示全部楼层
是好用了很多,但是项目大了以后不小心重名了debug就很痛苦了。所以这种变量基本使用就是 i j k 计数的, tempXXX rtn 这种常见的临时变量。

出0入4汤圆

发表于 2023-5-14 12:42:54 | 显示全部楼层
是不是Keil C51还是不可以?
Keil MDK肯定是可以的

出0入115汤圆

发表于 2023-5-14 13:20:32 来自手机 | 显示全部楼层
xiaoergao 发表于 2023-5-14 08:31
是好用了很多,但是项目大了以后不小心重名了debug就很痛苦了。所以这种变量基本使用就是 i j k 计数的, t ...
(引用自11楼)

c写大项目代码真的痛苦,羡慕那些能写linux内核的牛人,自己搞了好几个项目,都是指针内存出错问题占比99%。

出0入0汤圆

 楼主| 发表于 2023-5-14 14:37:29 | 显示全部楼层
laujc 发表于 2023-5-14 12:42
是不是Keil C51还是不可以?
Keil MDK肯定是可以的
(引用自12楼)


keil MDK 4,默认配置下,是不行的,上面说打开C99模式后就支持了,还没试过,现在不用keil4了

Keil MDK5 默认配置就支持C++这种模式了。

出0入4汤圆

发表于 2023-5-14 15:01:42 | 显示全部楼层
三年模拟 发表于 2023-5-14 13:20
c写大项目代码真的痛苦,羡慕那些能写linux内核的牛人,自己搞了好几个项目,都是指针内存出错问题占比99 ...
(引用自13楼)

大型软件都要各种情况下的测试,在知乎看到过一个段子。
一个测试工程师走进一家酒吧,要了一杯啤酒
一个测试工程师走进一家酒吧,要了一杯咖啡
一个测试工程师走进一家酒吧,要了0.7杯啤酒
一个测试工程师走进一家酒吧,要了-1杯啤酒
一个测试工程师走进一家酒吧,要了2^32杯啤酒
一个测试工程师走进一家酒吧,要了一杯洗脚水
一个测试工程师走进一家酒吧,要了一杯蜥蜴
一个测试工程师走进一家酒吧,要了一份asdfQwer@24dg!*(@
一个测试工程师走进一家酒吧,什么也没要
一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来
一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿
一个测试工程师走进一
一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷
一个测试工程师走进一家酒吧,要了NaN杯Null
1T测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶
1T测试工程师把酒吧拆了
一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱
一万个测试工程师在酒吧门外呼啸而过
一个测试工程师走进一家酒吧,要了一杯啤酒';DROP TABLE 酒吧
测试工程师们满意地离开了酒吧。

然后一名顾客点了一份炒饭,酒吧炸了。

出0入4汤圆

发表于 2023-5-14 17:16:25 | 显示全部楼层
xiaoergao 发表于 2023-5-14 15:01
大型软件都要各种情况下的测试,在知乎看到过一个段子。
(引用自15楼)

所以接口处理要做判断,不符合的一律抛异常

出0入4汤圆

发表于 2023-5-14 18:28:21 | 显示全部楼层
sy8501 发表于 2023-5-14 14:37
keil MDK 4,默认配置下,是不行的,上面说打开C99模式后就支持了,还没试过,现在不用keil4了

Keil MDK ...
(引用自14楼)

我说的是keil C51没看到哪里支持,不是说MDK4
MDK4我没有测试

出0入0汤圆

发表于 2023-5-17 16:38:28 | 显示全部楼层
据说 keil 6 很快就要出来了, keil 5 也很快被淘汰
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 04:50

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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