免费注册 查看新帖 |

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
11 [报告]
发表于 2011-02-19 13:29 |只看该作者
围观楼主
ypyf3000 发表于 2011-02-19 13:00



    You are welcome.

论坛徽章:
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
12 [报告]
发表于 2011-02-19 13:31 |只看该作者
register是历史遗留
inline也在也在逐渐变得多余
不过c++里auto已经重生
也许某一天register也会复活
xr55993 发表于 2011-02-19 12:57



我不怎么喜欢inline,感觉有点难以预测结果是否会变好,但多数情况下应该能变好吧。

论坛徽章:
9
摩羯座
日期:2013-08-15 15:18:48狮子座
日期:2013-09-12 18:07:47金牛座
日期:2013-09-16 13:23:09辰龙
日期:2013-10-09 09:03:27白羊座
日期:2013-10-17 13:32:44子鼠
日期:2014-04-23 15:09:38戌狗
日期:2014-09-17 11:37:542015年亚洲杯之韩国
日期:2015-03-26 10:16:442015亚冠之武里南联
日期:2015-08-18 14:55:52
13 [报告]
发表于 2011-02-19 13:32 |只看该作者
1、2很有用,1、2的目的并不是为了限定在特定的.C或.CPP里面,而是为了去掉函数或者变量的名称,这样链接的时候不容易出现函数或者变量重定义的问题。但是既然去掉了名称,那么其他的.C或.CPP自然找不到它了,所以就貌似限定在了特定的.C或.CPP里面。这是目的和作用弄混了的说法。

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
14 [报告]
发表于 2011-02-19 13:34 |只看该作者
static用得多,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
15 [报告]
发表于 2011-02-19 13:35 |只看该作者
1,2我是经常用的,不是写在头文件里面,是写在实现文件里面.可以隐藏一些实现,还可以防止命名冲突等等. ...
egmkang 发表于 2011-02-19 13:09


我的意思是我喜欢把所有的外部变量和函数声明都放在头文件里面,

这样就直接导致所有的函数都全局可见了,但是确实导致了命名空间的冲突。

但是我总感觉用source file来现代变量或者是函数的scope有点奇怪,反正就是觉得别扭。

论坛徽章:
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
16 [报告]
发表于 2011-02-19 13:37 |只看该作者
1、2很有用,1、2的目的并不是为了限定在特定的.C或.CPP里面,而是为了去掉函数或者变量的名称,这样链接的 ...
w_anthony 发表于 2011-02-19 13:32



这么说我用的是最少的那个用途了。

{:3_184:}

论坛徽章:
0
17 [报告]
发表于 2011-02-19 14:09 |只看该作者
static 和 register 都不怎么用...

论坛徽章:
0
18 [报告]
发表于 2011-02-19 14:42 |只看该作者
一个cpp通常放的都是相关的函数吧
它们可能用到同一个变量
而这个变量对程序的其它部分并无意义时
应该用static 或者无名namespace 限定
姑且称之为模块作用域吧
一个cpp一个模块

论坛徽章:
0
19 [报告]
发表于 2011-02-19 18:14 |只看该作者
本帖最后由 幻の上帝 于 2011-02-19 18:17 编辑

file scope很奇怪么?文件既然包含了能确定范围的源代码,当做scope有问题?(关于source file/header file的纠结,建议请先弄明白translation unit的概念。)至于static嘛,有意见请去BS C语言的发明者。(说实话这种用法我也觉得不爽。C++里都用unnamed namespace。)
另外,scope和identifier相关,和变量这种entity当然不见得有必然联系。所有“变量或者函数的scope”这类无谓说法产生的无谓问题都不要指望能有什么合理的解释。当然把表示local variable的identifier的scope和lifetime扯上关系以便节约手写代码确实算是一项伟大发明,不过误导到LZ了?
register非强制算是缺点么……顺便把inline也嘲笑一遍吧。
没事就玩指针?好玩么?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2011-02-19 19:02 |只看该作者
楼主太搞笑了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP