C++注释在C中被认为是不好的风格吗?

Igo*_*gor 17 c comments coding-style

我和一些学生讨论了C编程风格,当我们谈论评论时,其中一个人注意到他没有在C代码中使用C++注释,因为它们是个坏主意.事实证明,这是基于个人经验的多行C++评论,但这不是我第一次听到这种说法.那么,被//认为是有害的,如果是的话,为什么呢?

Cod*_*ula 25

这取决于您使用的C版本.C 99允许//作为注释,而C 89则不允许.

如果您希望尽可能向后兼容,请不要使用它们.但是,我认为这是一个极端的边缘情况.我愿意打赌几乎所有人都使用C 99.

编辑:任何最新版本的GCC都使用大部分C99.您可以在维基百科中找到更多信息.

  • 我的标准gcc选项是`-ansi -pedantic -W -Wall`,这使得gcc非常严格地拒绝和警告坏代码.它也拒绝`//`评论.你可以使用`-std = c99`而不是`-ansi`如果你想接受C99的东西但保持严格,但我更喜欢我的C代码尽可能广泛兼容. (4认同)
  • 实际上很少有人使用C99.只是大多数C编译器(甚至是C90编译器)接受//作为扩展. (2认同)

Ste*_*eim 11

如果您在C中使用C++注释,则某些C编译器可能不接受您的代码.我认为这有害.

  • @Pascal,如果你使用有向图和三字母,C++风格的评论不是你最大的问题:P (4认同)
  • 好点子.我在过去的20年里没有见过这样的编译器,但这是它有害的唯一原因.Otoh从项目中删除C++注释最多需要一个小时. (3认同)
  • 一小时?编写Perl脚本最多5分钟... (3认同)
  • @Phillip,我把嵌入式开发作为一项工作.他们中的大多数不支持C99,但即使是最早的一次,从C90之前的日子开始,C++评论也可以作为扩展. (2认同)

dls*_*dls 9

根据MISRA-C 2004标准,不允许使用C++注释.某些行业(特别是汽车行业)认可符合MISRA标准的代码,因此不允许使用C++注释.我相信其他静态代码检查工具也是如此,例如LDRA等......

这并不会使它们本身就变坏,但它确实意味着如果你进入某些行业并希望以专业的方式工作,你将会积极地不鼓励使用C++风格的评论.

  • MISRA C:2012(包括C99合规性)将允许`//`评论 (3认同)

Kor*_*icz 5

使用(尚未广泛支持的)C99标准将C++风格的注释添加到C中.虽然标准本身并未得到广泛支持,但它的某些部分(如C++样式注释)现在几乎在每个编译器中都受支持.考虑到它们被添加,这意味着需要它们,所以很容易弄清楚它不会被认为是不好的风格 - 特别是如果你自己设定了使用哪个指南.

唯一不使用它们的理由是,如果你想编写一个结构良好的C89编译程序.

  • @maxschlepzig:这很简单 - MSVC. (2认同)