为什么许多例子只使用c / c ++中的多行注释?

时间:2016-07-14 16:26:52

标签: c styles comments multiline

我注意到看到示例代码的片段(例如下面的代码),大多数都使用多行/ * * /注释而不是单行//注释。这是为什么?

    /*    Bits in this RTOS task's notification value are set by the notifying
    tasks and interrupts to indicate which events have occurred. */
    xTaskNotifyWait( 0x00,      /* Don't clear any notification bits on entry. */
                     ULONG_MAX, /* Reset the notification value to 0 on exit. */
                     &ulNotifiedValue, /* Notified value pass out in
                                          ulNotifiedValue. */
                     portMAX_DELAY );  /* Block indefinitely. */

http://www.freertos.org/RTOS_Task_Notification_As_Event_Group.html

我一直觉得这有点烦人,因为它阻止我在必要时评论代码块,当你将代码片段复制到一个新项目并且还没有更新所有相关内容时IE浏览器在新项目中编译的函数。

我发现的唯一信息是,平台之间如何处理换行符可能存在问题,而某些系统可能无法正确解释换行符以结束单行注释。这是唯一的原因吗?是否有一些样式指南,这些示例遵循禁止单行注释?

5 个答案:

答案 0 :(得分:5)

您使用FreeRTOS教程作为C ++的示例。如果您查看FreeRTOS的sources,您会发现它实际上是用C语言编写的,而不是C ++。

C ++样式单行注释(//)在C99中引入之前不存在于C中。在C99之前编写了很多代码,包括教程。甚至可以在不使用新语言功能的情况下编写新的C代码,以使程序与不支持新规范的旧编译器保持兼容 - 或者仅仅是由于旧习惯或偏好。

  

我总觉得这有点烦人,因为它阻止我在必要时评论代码块

使用此选项暂时禁用代码块:

#if 0
/*    Bits in this RTOS task's notification value are set by the notifying
    tasks and interrupts to indicate which events have occurred. */
    xTaskNotifyWait( 0x00,      /* Don't clear any notification bits on entry. */
                     ULONG_MAX, /* Reset the notification value to 0 on exit. */
                     &ulNotifiedValue, /* Notified value pass out in
                                          ulNotifiedValue. */
                     portMAX_DELAY );  /* Block indefinitely. */
#endif

答案 1 :(得分:0)

通常它与编码标准有关。标准是一种写作惯例(在群组/计算机语言/公司中),旨在使代码更具可读性,并使其看起来像一个单一的编码器所写的一切(标准的目标。)并非所有公司都有相同的标准,但是freertos使用/ * * /(例如谷歌使用//)。

这就是你标记我们的代码有/ * * /的主要原因,因为这就是公司同意编写代码的方式。

答案 2 :(得分:0)

单行注释//和多行注释/* */都是有效的C ++。为什么有人使用一个而不是另一个纯粹是品味和个人偏好的问题。

如果您有一个不错的文本编辑器,也不会阻止您注释掉代码块 - 例如,在Emacs中,标记要注释的块,然后执行M-x comment-region - 或其他编辑器/ IDE中的类似,它们将会做正确的事。如果不;获得一个更好的编辑器/配置为你当前的编辑器。

答案 3 :(得分:0)

为了描述一个程序我们在开始时写的东西,我们通常使用/ * * /因为它可以通过多行并描述一个特定的行我们使用什么和它做什么//

答案 4 :(得分:0)

您正在查看的代码可能是或最初是用C编写的。除此之外,编码只是一种风格选择,可能是这个项目的主角选择的风格。有两种方法可以解决这个问题:

<强> #if 0

#if 0
    some code we hate
#endif

OR

如果您使用的是IDE,则可能会选择注释掉一段代码:

enter image description here

结果如下:

//    stuff;
//    stuff;
//    stuff;