免费注册 查看新帖 |

Chinaunix

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

拙著《狂人C》出版,特邀CU网友垂注,并欢迎品头论足、批评指正 [复制链接]

论坛徽章:
0
291 [报告]
发表于 2010-12-08 16:53 |只看该作者
回复  mirnshi

首先,非常感谢mirnshi网友发表对本书的批评意见。
我有些拿不准的是标识符的命名问题究 ...
KBTiller 发表于 2010-12-08 07:14



    2.这是一个过时的陈述。C99容许标识符可以由更广泛的文字(ISO/IEC 9899:1999,Annex D)组成。鉴于编译器的限制,本书的标识符依然依照原来的方法构造。

引用错了吧。
看起来是指C99的Annex J:
Annex J
(informative)
Portability issues
J.5 Common extensions
1 The following extensions are widely used in many systems, but are not portable to all
implementations. The inclusion of any extension that may cause a strictly conforming
program to become invalid renders an implementation nonconforming. Examples of such
extensions are new keywords, extra library functions declared in standard headers, or
predefined macros with names that do not begin with an underscore.
J.5.2 Specialized identifiers
1 Characters other than the underscore _, letters, and digits, that are not part of the basic
source character set (such as the dollar sign $, or characters in national character sets)
may appear in an identifier (6.4.2).
Annex D在ISO C++倒是讲Portability issues的。
另外,这里是informative而不是normative,并且标准指出了“are not portable to all
implementations”。所以即使编译器不支持这种扩展,仍然可以符合标准。

论坛徽章:
0
292 [报告]
发表于 2010-12-08 16:55 |只看该作者
这样我又有点模糊了,能否详细解释一下运行时程序的内存结构?
hobbs136 发表于 2010-12-08 15:20

这个用语言本身就可以解释。
变量名是标识符,不是对象或函数,不占用运行期内存。

论坛徽章:
0
293 [报告]
发表于 2010-12-08 17:03 |只看该作者
关于拼音缩写用于命名的问题,同287L。
匈牙利命名法能一度被广泛接受,一个重要的原因是前缀缩写在特定场合下可以几乎保证相对的唯一性,这样很少会有歧义。而拼音缩写就做不到这点。


对于这种写法,恐怕存在试卷上的意义要远远大于实际编程中。有些回字有多少种写法的味道。函数指针理解 ...
mirnshi 发表于 2010-12-08 14:42


函数指针的一个重要应用是实现回调,而不仅仅是简化。
在C语言中要是没有函数指针就不会有像atexit之类的函数。

论坛徽章:
0
294 [报告]
发表于 2010-12-08 18:48 |只看该作者
有幸读到此书,可看到作者的深厚功底,C语言对我们来说很熟悉,但,读起来,还是收益匪浅。对我们用C语言开发的人,是一本好书。

论坛徽章:
0
295 [报告]
发表于 2010-12-08 19:47 |只看该作者
回复 294# 底层开发


    细读笔者指针的理解,使我更能深入理解,结合自己工程,受益很多。

论坛徽章:
0
296 [报告]
发表于 2010-12-08 20:07 |只看该作者

论坛徽章:
0
297 [报告]
发表于 2010-12-08 20:10 |只看该作者
#define rGPFCON    (*(volatile unsigned *)0x56000050) //Port F control
#define rGPFDAT    (*(volatile unsigned *)0x56000054) //Port F data
#define rGPFUP     (*(volatile unsigned *)0x5600005 //Pull-up control F

rGPFUP=0x30;
在软件底层开发中,所涉及的指针,可以把一个数字直接转换成地址,这种用法比较常见,也很实用,也算指针的一种表示方法。

论坛徽章:
0
298 [报告]
发表于 2010-12-08 20:13 |只看该作者
对于这种写法,恐怕存在试卷上的意义要远远大于实际编程中。有些回字有多少种写法的味道。函数指针理解 ...
mirnshi 发表于 2010-12-08 14:42

    我的看法不是这样。我认为对于复杂的问题,使用这样复杂的数据类型是十分可能的。实际上第十一章确实有不少这样的应用
    当然不使用复杂的数据结构问题也未必不能解决,但算法要复杂得多。
    能针对特定问题构建巧妙的数据结构在我看来是使用C的乐趣之一

论坛徽章:
0
299 [报告]
发表于 2010-12-08 20:16 |只看该作者
引用错了吧。
看起来是指C99的Annex J:
幻の上帝 发表于 2010-12-08 16:53

不,我是指 Annex D (normative) Universal character names for identifiers

论坛徽章:
0
300 [报告]
发表于 2010-12-08 22:31 |只看该作者
额,拼音的问题是歧义太多,汉语同音词太严重,就算都是中国人也受不了。反而极大的降低了代码的 ...
donotblock 发表于 2010-12-08 13:29



    您提到的“拼音的问题是歧义太多,汉语同音词太严重”的问题是存在的
    您主张不为工程“花费的额外精力”我也赞同
   
    但我觉得使用英文单词我觉得未必也能完全避免这些问题。
    比如,一个不熟悉的业务也就意味着不熟悉相关的专业词汇,现背单词吗?这也需要“花费的额外精力”。而且一旦团队内部的英语水平良莠不齐怎么办?他们能够懂得对方的“英语”吗?
    再说同音字的问题,我见过初学者用time做标识符,尽管可以,但与库函数同名,理应避讳。就是说英文也可能存在类似的问题
    其他:
    我见过太多使用英文单词但却不通到了令人发指地步的中文程序设计语言书
    C99开始容许其他字符做标识符,在我看来是一个友好的提示,为什么我们自己要作茧自缚呢
    我主张像写作文那样写代码,代码应该是可以朗读的。要做到这点,最方便的是母语,毕竟我们就是用这种语言思考问题的,用她表达也最方便容易
    我反对为初学者设置完全不必要的“英语”门槛
    “汉语同音词”在函数局部一般不会成为什么问题,只要函数不是特别大
   “局部变量都得依靠详细的注释”,我一点都不觉得丢人,任何增加可读性的努力我认为都不会白做。事实上我主张注释至少应该在代码占一半的篇幅,而且应该先写注释后写代码,注释写好了,代码是件简单的事情
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP