我注意到看到示例代码的片段(例如下面的代码),大多数都使用多行/ * * /注释而不是单行//注释。这是为什么?
/* 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浏览器在新项目中编译的函数。
我发现的唯一信息是,平台之间如何处理换行符可能存在问题,而某些系统可能无法正确解释换行符以结束单行注释。这是唯一的原因吗?是否有一些样式指南,这些示例遵循禁止单行注释?
答案 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)