sy8501 发表于 2023-5-13 20:31:26

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

比如

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

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

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

xuekcd 发表于 2023-5-13 21:11:47

有一次程序出了奇怪的问题之后再也不敢这样做了??

Landmark 发表于 2023-5-13 21:18:27

这种写法所声明变量的作用域只在for语句之内吧?如果是的话很容易与函数开头的声明变量搞混。

airbox 发表于 2023-5-13 21:19:46

这是C99标准增加的特性

sy8501 发表于 2023-5-13 21:22:04

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

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

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

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

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

chenchaoting 发表于 2023-5-13 21:31:31

KEIL4,也可以的,C++设置里加入C99

wye11083 发表于 2023-5-13 21:49:29

xuekcd 发表于 2023-5-13 21:11
有一次程序出了奇怪的问题之后再也不敢这样做了??
(引用自2楼)

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

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

SUPER_CRJ 发表于 2023-5-13 21:56:19

感觉至少5/6年前都有了,C99模式,可以在局部直接定义变量,用了很久了,很好用。

sy8501 发表于 2023-5-13 22:03:57

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

我是好多年没写代码了。

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

guolun 发表于 2023-5-14 08:07:02

这种C++风格很好用。用好多年了。

xiaoergao 发表于 2023-5-14 08:31:48

是好用了很多,但是项目大了以后不小心重名了debug就很痛苦了。所以这种变量基本使用就是 i j k 计数的, tempXXX rtn 这种常见的临时变量。

laujc 发表于 2023-5-14 12:42:54

是不是Keil C51还是不可以?
Keil MDK肯定是可以的

三年模拟 发表于 2023-5-14 13:20:32

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

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

sy8501 发表于 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++这种模式了。

xiaoergao 发表于 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 酒吧
测试工程师们满意地离开了酒吧。

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

laujc 发表于 2023-5-14 17:16:25

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

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

laujc 发表于 2023-5-14 18:28:21

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

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

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

hpdell 发表于 2023-5-17 16:38:28

据说 keil 6 很快就要出来了, keil 5 也很快被淘汰
页: [1]
查看完整版本: 发现keil5支持C++那种编程风格,记得以前keil4是不行的