游戏开发论坛

 找回密码
 立即注册
搜索
楼主: 微无渊

一个很糟糕的结构体

[复制链接]

0

主题

37

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2012-9-3 11:29:00 | 显示全部楼层

Re: Re: Re:一个很糟糕的结构体

gantleman: Re: Re:一个很糟糕的结构体

这种结构通常用在二进制的文件存取上,
正常写法是使用struct head和struct body两个部分。
使用一次分配...


你忘记了C++的对象赋值了?如果在C++中这么写,有必要禁用赋值,或者自己实现拷贝构造。
这也是我说C++中不要这么写的原因。

0

主题

37

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2012-9-3 11:37:00 | 显示全部楼层

Re: Re:一个很糟糕的结构体

微无渊: Re:一个很糟糕的结构体

我写代码,永远是把代码的排版,布局,放在第一位的,
就算是个demo,我也会精心安排代码排版,以最大限度增加...


代码风格每个人都不一样。你初次见到这种风格的结构体,所以觉得不习惯,习惯了就好了。
就好像第一次看到while(*p++ = *q++)这种代码,都会琢磨半天。
看多了的话,瞄一眼就知道这段代码实现的是什么,甚至还会觉得简洁、优雅。

C的代码太灵活了,有些写法第一次见甚至看不出是C代码。
当然如果你看的这段代码是C++的话,那是必须要吐槽的。

50

主题

236

帖子

454

积分

中级会员

Rank: 3Rank: 3

积分
454
 楼主| 发表于 2012-9-3 12:17:00 | 显示全部楼层

Re: Re: Re:一个很糟糕的结构体

numpfish: Re: Re:一个很糟糕的结构体



代码风格每个人都不一样。你初次见到这种风格的结构体,所以觉得不习惯,习惯了就好了。
就好像第一次...


恩,
win32 api给出的很多定义也是这样,让人琢磨不定,

比如:

  1. typedef struct tagBITMAPINFO {
  2.     BITMAPINFOHEADER    bmiHeader;
  3.     RGBQUAD             bmiColors[1];
  4. } BITMAPINFO, FAR *LPBITMAPINFO, *PBITMAPINFO;
复制代码


就需要特别注意bmiColors这个成员,在这个结构体空间之外可能还有数据,
但是什么时候有,什么时候没有? 就只能找相关代码了。

另外,我也想到了一件事,那就是我从没学过C语言,我打一开始学的就是C++,所以,对于纯粹的C语言程序缺乏经验

23

主题

515

帖子

552

积分

高级会员

Rank: 4

积分
552
发表于 2012-9-3 13:40:00 | 显示全部楼层

Re:一个很糟糕的结构体

我只想说一句话:你反对不表示这个不好,你觉得糟糕不表示这个不优秀。。。

另: array[0] 应该是vc编译不过,所以才 array[1]。
再另:这个绝对只是数组,而不是指针。。。
最后另:多读C代码,C++和C——完全不一样。。。

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2012-9-3 14:58:00 | 显示全部楼层

Re: Re:一个很糟糕的结构体

我就怕有人这么说特意用vc确认下,
[em1]看到过的代码确实用的array[0]。
疯子阿虹: Re:一个很糟糕的结构体

我只想说一句话:你反对不表示这个不好,你觉得糟糕不表示这个不优秀。。。

另: array[0] 应该是vc编译...

0

主题

4

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2012-9-5 15:37:00 | 显示全部楼层

Re:一个很糟糕的结构体

柔性数组,可以节省分配给指针的内存空间,并且释放的时候可以直接一起释放掉。不过用点注释比较好,省的没接触过的看不懂

58

主题

1437

帖子

2207

积分

金牌会员

Rank: 6Rank: 6

积分
2207
发表于 2012-9-5 16:15:00 | 显示全部楼层

Re: Re:一个很糟糕的结构体

学习了还真有正式名称,话说c99的中文版什么时候能出呢?
nhpeng1104: Re:一个很糟糕的结构体

柔性数组,可以节省分配给指针的内存空间,并且释放的时候可以直接一起释放掉。不过用点注释比较好,省的没接触过的看不懂

4

主题

21

帖子

85

积分

注册会员

Rank: 2

积分
85
QQ
发表于 2012-9-6 11:16:00 | 显示全部楼层

Re:一个很糟糕的结构体

任何struct和class都应该加构造,并且在构造中初始化。

而不是在 定义变量的时候,再去初始化一次。

0

主题

4

帖子

26

积分

新手上路

Rank: 1

积分
26
发表于 2012-9-6 15:40:00 | 显示全部楼层

Re: Re: Re:一个很糟糕的结构体

gantleman: Re: Re:一个很糟糕的结构体

学习了还真有正式名称,话说c99的中文版什么时候能出呢?

等有时间的原意做这个的人出现。

4

主题

20

帖子

26

积分

注册会员

Rank: 2

积分
26
发表于 2012-9-7 09:31:00 | 显示全部楼层

Re:一个很糟糕的结构体

下次你再看到这样的代码,你就会觉得“清晰”了。
这只是一个作者认识度和读者认识度不匹配的问题。
“清晰”只是个感性词,你的代码再清晰,让你老板来读还是浆糊。

感谢楼主分享自己的疑惑,学到了不少东西,“清晰”了不少
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-2-27 20:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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