游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: tarkey

[原创]你真的了解C吗?

[复制链接]

4

主题

25

帖子

25

积分

注册会员

Rank: 2

积分
25
发表于 2004-6-10 14:29:00 | 显示全部楼层

Re:[原创]你真的了解C吗?

说得对。
记得是哪个牛人说过:过早的代码优化是犯罪。只有在保证稳定、正确、易读、易维护的前提下,才能再谈效率、优化之类。
如果是为了技巧而技巧,这种技巧只能让其他人感觉头痛。如果楼主做过大一点的项目,应该有比较深的体会才是。
如果作为研究,当然技术越先进越吃香;如果是做产品,还是以通用性技术为主,也就是上面几个兄弟说的,要尊重团队的选择。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-10 15:12:00 | 显示全部楼层

Re:[原创]你真的了解C吗?

现在好象都开始不流行用单语种做整个项目了,尤其是对于网络应用的。
用C的地方我觉得都应该是一些对效率要求比较高的地方,或者是一个单独模块的内部。
对于模块内部,要低聚合,高偶合,对于模块之间的设计应该是高聚合,低偶合。
模块内部的实现的话,可以用这些东西,就好象LINUX的内核程序一样,这样的代码比
比皆是。但是作为和其他程序的接口,兼容性还是第一位的。

6

主题

74

帖子

230

积分

中级会员

Rank: 3Rank: 3

积分
230
发表于 2004-6-10 16:48:00 | 显示全部楼层

Re:[原创]你真的了解C吗?

typedef struct chat_s {
     struct message_header head;
     char msg[0];
} chat_t;

这样的话,大部分编译器都支持

0

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2004-6-12 08:09:00 | 显示全部楼层

Re: Re:[原创]你真的了解C吗?

Kevin_Qing: Re:[原创]你真的了解C吗?

typedef struct chat_s {
     struct message_header head;
     char msg[0];
} chat_t;

这样的话,...


vc7可以支持,但是会有警告。
警告说明msg[]与msg[0]作为空数组,在分配空间的表示上上会误导人。需要额外的注意。

0

主题

32

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2004-6-12 12:40:00 | 显示全部楼层

Re:[原创]你真的了解C吗?

楼主提出的
void process_buf(char newbuf[static 255]);
calXY( (pos_t*){my_x, my_y} );
以及多个特性,真的是efficient???
看上去完全只是一种代码的简写而已,楼主能否给出编译器将如何优化传统写法和这种新写法?
如果仅仅是简写的用处,那将和类似这样的代码一样被屏弃:( ++a ) = ( a++ ) + ( ++a );

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
 楼主| 发表于 2004-6-12 16:45:00 | 显示全部楼层

Re:[原创]你真的了解C吗?

更正一下,calXY( (pos_t*) {my_x, my_y) );
这个是我的错误,这样写是不合法的,这个东西只能对同类型的东西转:
比如calXY(int *a);
就可以用
calXY( (int *) { 10, 20 } );
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-1 18:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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