免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: fender0107401
打印 上一主题 下一主题

[C] 我觉得在C里面static和register是2个有点搞笑的特性。 [复制链接]

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
31 [报告]
发表于 2011-02-20 22:40 |只看该作者
而且我也不怎么写外部变量,感觉后续的维护很不好办,

总感觉不安全,如果修改数据结构以后总感觉影响太大,

所以我还是觉得static没什么用。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
32 [报告]
发表于 2011-02-20 22:45 |只看该作者
而且我也不怎么写外部变量,感觉后续的维护很不好办,

总感觉不安全,如果修改数据结构以后总感觉影响太 ...
fender0107401 发表于 2011-02-20 22:40



    感觉不安全是一回事情,那是设计的事情。用的时候还是必须得用。有些东西你是无法回避的,多写写,少说说,才刚开始学,质疑是好事,但语气应该变变。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
33 [报告]
发表于 2011-02-20 22:48 |只看该作者
打个比方,多人合作的项目,当项目已经按模块划分好了。你去写某个函数的实现,可能在其中你会用 ...
cjaizss 发表于 2011-02-20 22:33


反正我就是靠加前缀,如果别人要是能用到我就会把这个东西单独弄一个模块放到公共模块里面。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
34 [报告]
发表于 2011-02-20 22:51 |只看该作者
反正我就是靠加前缀,如果别人要是能用到我就会把这个东西单独弄一个模块放到公共模块里面。
fender0107401 发表于 2011-02-20 22:48



    不要过度的依赖这个,static定的作用域比这个更安全,并且应该去用。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
35 [报告]
发表于 2011-02-20 22:52 |只看该作者
不要过度的依赖这个,static定的作用域比这个更安全,并且应该去用。
cjaizss 发表于 2011-02-20 22:51



    不仅要用对于文件级别的static,也应该用对于函数作用域的static,这样对于代码的可读性都是好事

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
36 [报告]
发表于 2011-02-20 23:00 |只看该作者
感觉不安全是一回事情,那是设计的事情。用的时候还是必须得用。有些东西你是无法回避的,多写写 ...
cjaizss 发表于 2011-02-20 22:45


我在模块之间传递到是用外部变量。

语气吗,就那么回事吧,别在意,

我看计算机方面的书就跟看故事会一样,所以看什么都是娱乐,搞笑也不是什么贬义词,除非我是在吵架,

就算static我没什么见识,那register你不觉得搞笑。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
37 [报告]
发表于 2011-02-20 23:36 |只看该作者
本帖最后由 cjaizss 于 2011-02-20 23:40 编辑
我在模块之间传递到是用外部变量。

语气吗,就那么回事吧,别在意,

我看计算机方面的书就跟看故 ...
fender0107401 发表于 2011-02-20 23:00



    那如果我再跟你说一个关键字,你可以更加觉得不可思议了,volatile,它是强制要求编译器根据地址来访问变量,而不是优化到比如寄存器上,是不是觉得更加搞笑?但在我们写硬件驱动的时候,这个是必用了。register也好,volatile也罢,volatile是强制要求编译器,register是建议要求编译器。没什么搞笑的,只在于你的需求。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
38 [报告]
发表于 2011-02-20 23:59 |只看该作者
那如果我再跟你说一个关键字,你可以更加觉得不可思议了,volatile,它是强制要求编译器根据地址 ...
cjaizss 发表于 2011-02-20 23:36


我喜欢强制编译器行为,因为这样一来感觉自己都控制了,

如果有什么事没在我控制范围内,而要取决于其他什么因素,我觉得有点别扭,

所以看register就感觉别扭,而且约束太多了,

你说的那个关键词我还真没看过,不过查了一下到是觉得挺好,至少它是强制性的吧。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
39 [报告]
发表于 2011-02-21 00:02 |只看该作者
本帖最后由 cjaizss 于 2011-02-21 00:07 编辑
我喜欢强制编译器行为,因为这样一来感觉自己都控制了,

如果有什么事没在我控制范围内,而要取决于 ...
fender0107401 发表于 2011-02-20 23:59



    强制优化成寄存器却不一定可以实现,所以register是建议性的。
  但很多时候都需要建议,比如gcc的扩展之中有很多建议性的东西,不建议的话,编译器可能按着你搞不清的思路去编译它。而建议越多,你就越可控,这就是建议的用途。这些东西并不是为了吃饱了没事干乃至搞笑而生的,有实际用途的。慢慢的,我想你会明白的,现在,我觉得你还是好好的学吧,当故事书看的话,那我建议你还是找一本真正的故事书或许比较好一点。既然是看技术书,还是认真的学学比较的好。
  在你不知道某种东西的用途的时候,你可以把它放置一边,暂时忘掉都可以。有些C语言的书没提到比如像volatile这样的东西,这也正常,因为刚接触C语言的人根本无法可以理解像这样的用途到底在什么地方。但随着对你所学的技术步步深入理解,会明白的

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
40 [报告]
发表于 2011-02-21 00:07 |只看该作者
先说static吧,

1. 可以加在external variable前面,然后只有这个source file的function才能看见,

2 ...
fender0107401 发表于 2011-02-19 11:51



    楼主最搞笑,Static要用,Register也没什么不好~,既然是Register,自然就不会有Address这种东西(准确的说还是有的,只是它是固定的,没什么用,也就 Register的编号【或说编码】)

   关于Static,那就不值一驳了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP