/ ** /评论比//更好吗?

时间:2013-12-06 21:44:23

标签: c coding-style comments

一年前,我开始尝试使用C,我看到了解释stdio.h标头的注释//。今天,决定阅读K& R C(这是根据stackoverflow帖子阅读的最推荐的书)我一直看到这个/* comment */评论,从未看到//评论。这两者有区别吗? (他们有不同的目的吗?)有关于此的编码风格吗?

6 个答案:

答案 0 :(得分:3)

K& R C书(第二版)描述了ANSI C(也称为C89)。在此版本//中 - C中不允许使用注释,但它们位于(ISO)C99中。它们是从C ++继承的。

两者之间的区别在于:

  • // - 评论为行评论,意味着它们从//开始到下一个新行延伸。
  • /* */ - 评论是阻止评论,意味着他们从/*开始,到*/结束。它们可以跨越多行,它们可以在相同的行中以其周围的代码开始和结束,例如:

    printf("%s\n", /* I wonder if this could be done simpler */ "Hello world!");
    

    在这种情况下,行注释会产生:

    printf("%s\n", // I wonder if this could be done simpler "Hello world!");
    

    这将是语法错误,除非在下一行继续printf语句。

答案 1 :(得分:1)

略有不同。如果要用'//'对整个块(多行)代码进行注释,则必须在每行的开头添加一个'//'。此外,'//'会在该序列之后注释掉所有内容。

// This
// is
// a
// block
// comment

'/ * .. * /'版本有一个明确的开头和结尾,所以你可以使用一个序列来评论你想要的多少(或很少)。

虽然这并不总是最好的想法(尝试和阅读可能会让人感到困惑),但是可以只使用'/ * .. * /'版本注释掉一部分行。

for(i = 0; i < /* TEST_VAL */ NOT_TEST_VAL; ++i)

你不能用//

来做到这一点
for(i = 0; i < // TEST_VAL NOT_TEST_VAL; ++i)

表情格式不正确?

此外,与其他人一样,您不能在任何C89限制代码中使用'//'表达式。

答案 2 :(得分:0)

原始C规范不包含//样式注释,这是AFAIK仅在C ++中正式引入。基本上所有当前的编译器都支持它,但也只支持C模式。对于简短的单行注释,因此它是优选的,因为它更容易键入。项目特定的编码指南通常会说明在哪里使用。

答案 3 :(得分:0)

我同时使用两者。在决定评论类型时要考虑的一件事:

如果您使用/* ... */样式注释掉一小段文本,例如在一个函数中,然后想要注释掉整个函数,如果您不小心,则会遇到问题。例如:

/*
void my_function() {
    ...
    some_line_of_code(); /* your old comment */
    ...
}
*/

编译器会将旧注释的结束*/解释为注释块的结尾,这不是您想要的。如果您使用//样式进行行注释,则这不是问题。

答案 4 :(得分:0)

虽然他们不被允许进入c89,但现在他们被允许了。两者之间的主要区别在于您的评论所需的行数。但一般来说:

int x = 0 // This comment can be used for quick descriptions.
/*
 * This kind of comment should be used for multiple lines
 * that take more than 3 lines.
 */

最后,这一切都取决于你喜欢什么,但这是我见过如何使用每条评论的一般约定。

答案 5 :(得分:0)

/**/

在撰写多行评论时可能会更好用,例如:

System.out.println("Hello, world!");
/* Basic hello world statement
yada yada yada
Goodbye */

“//”样式注释可能用于编写单行注释,如图所示:

// This instance declares a private variable