您的位置 首页 知识

一线研制之声 之 C代码注释引发的“血案”

我要无辜的坦白说,您遇到标题党了。没有血案,但有些冲突。不是代码bug,我要讲注释风格。这位看官,既然来了,且读且评吧。故事是真实的,如有雷同纯属巧合。事情是这样的,有人离

  我要无辜的坦白说,您遇到标题党了。

  没有血案,但有些抵触。不是代码bug,我要讲注释风格。

  这位看官,已然来了,且读且评吧。故事是实在的,如有雷同纯属巧合。

  作业是这样的,有人离任,公司调我补缺。那个体系一向有个工程师在保护,参加该体系的新人来了又走,他一直泰若磐石。刚过去一个礼拜,我就心下窃吼:“TMD坑爹啊!”,也完全体会到什么叫—肯定的威望、专家。该软件体系,是公司发家的支柱产品,触及十几个国家x七八个机型,700+个文件(C言语,一切.c .h档),十几万行代码,尽两百个跨模块全局变量,编译条件成百上千……(好吧,这是找托言、吐槽的节奏)

  尽管有名义上的交代,和几回和声细语的亲近辅导。但真实独立打开作业时,许多小功用增修改,我都要折腾个好几天才干厘清代码调用联系、算法原理,然后找到修改点慎重纤细龟速前行。进展追寻的人有的时分也催毛了,直接请专家大师出手,咔咔咔,不到半响就搞定了。当然,前期我当然尽量的”不耻上问”,但人吗,总是有遇到被激起“节气”的时分。

  这几天,十分困难搞好一个全新的功用模块,把代码推送给他兼并编译。不曾想,呈现了让我泣血的一幕。

  我眼睁睁地、眼睁睁看着她把我辛苦敲入的代码注释/**/统统换成//,一份精巧的代码,登时成渣。

  我问询缘由,她的答复是: 当代码里边充溢注释符号/**/时,她想要用/**/注释整段代码时,就会很费事。 我理解了,由于/**/不支持嵌套。比方下面这样的句子是编译不过的。

  /*

  a = b+c; /* 注释 */

  */

  我的手抬了抬,毕竟作罢。尽管我感觉到庄严被蹂躏,心爱的著作被蹂躏,但我仍是开端反思。

  许多软件标准、专家、有经历的工程,都主张或要求注释代码最好运用 /**/,他们的理由大概如下:

  1. “//” 的注释的严密性不行。 例如

  // 注释句子 ??/

  a = b+c;

  此刻,a = b+c在一些编译器不会被执行。

  由于"??/"会被编译器当作 \,变成C言语的换行符。所以这段代码等同于

  // 注释句子 a = b+c ;

  就会被注释掉。咱们有爱好的,无妨去查找一下"C言语 三字母词"

  当然,哪怕没有??/, 自己打盹碰到delete键也是会屏蔽掉a=b+c的

  2. “//” 的注释,是C++开展后才引入的。 有些前期的C编译器对这种注释是不支持的。代码要做到全渠道兼容,这点是必需求考虑的。

  因而,老外界说的C言语软件标准,无论是MISRA仍是CMMI,一般都要求一切代码注释有必要运用/**/。

  君不见,那uCOS的最新版别源码,一切注释都是/**/。

  君不见,那STM32的最新固件库,洋洋洒洒几十个文件,通篇皆没有用到//。

  正是根据这样的理由,让我的心中充溢了愠怒。但我依然没有当场辩驳她,由于这些理由还有些苍白无力。

  1. 其时,那个什么三字母词“??x”究竟是什么我现已忘了,无法马上做试验编译给她看。

  并且时分我里边作了编译试验,得到的是

  "filename.c", line xxxx: Warning: #2532-D: support for trigraphs is disabled xx代码句子xx // ??/

  trigraph金山词霸—> [traigra:f]三字母词

  看吧,编译器都警告了,默许是不支持的。

  2. 并且,所谓的//是C++的,前期的c编译器不支持。

  这点谁鸟啊,咱们只需现在,只用最新版别的编译器。

  所以,我还要持续考虑。

  我要保护这个传统,为自己代言……

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/117996.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部