C中双斜线后的分号

时间:2012-01-08 19:50:06

标签: c comments

我对C语言的评论有疑问。 当我们写例如

//this is the first step

这意味着评论。

但是当我们写

//this is the first step;

这是否也意味着评论?我的意思是当我们在双斜线后添加分号时,这是否意味着该程序的注释或主要部分?

8 个答案:

答案 0 :(得分:8)

双斜线后的所有内容都是评论。

这包括分号,运算符,预处理程序指令,关键字甚至猫。

编辑:

我感兴趣的东西:

//comment \
also part of the comment\
this too part of the comment

我想反斜杠实际上已经被解析了。这是线条延续字符。值得一提的是我想。

我猜SO解析器无法识别该字符,但确实存在 - 至少在MSVC中存在。不确定它是否属于标准的一部分。

编辑2:

正如@vsz指出的那样,即使在评论中也会解析三字母:

/*
??/ is translated to \   
the following is not safe:
*/

//do we really need this??/
i++;

之前的代码i++;将不会被执行,因为??/已被\取代,因此i++;成为评论的一部分。

答案 1 :(得分:3)

分号只是评论中的另一个字符。

理所当然的是,在评论行末尾放置分号的做法是某人欺骗代码行度量 ... ...基本计算将分号计为语句的代理。他们应该为自己感到羞耻。

答案 2 :(得分:2)

双斜线注释出行是。编译器将忽略整行(包括分号,是)。

对于多行注释或与某些代码在同一行注释,请使用/ * comment here * /

Wiki在这里有一些很好的信息:http://en.wikipedia.org/wiki/C_syntax#Comments

注意(来自Wiki):

  

C ++样式行注释以//开头并延伸到结尾   线。这种评论风格起源于BCPL并成为有效的C.   C99中的语法;它不适用于原始的K& R C和ANSI   C:

答案 3 :(得分:0)

解析双斜杠注释后没有字符。它被预处理器剥离了。编译器永远不会看到它。

答案 4 :(得分:0)

// - 样式注释到达行尾。分号不经过特殊处理;分号结束语句,而注释不是语句。

答案 5 :(得分:0)

它仍然是一个评论:这两个:

// Hello, world

也不是:

// Hello, world;

将被执行

答案 6 :(得分:0)

//在同一行上划分后面的所有内容。一切。那就是你可以自信,无论你选择评论什么都将留下评论。

与/ * * /形成对比,可能出现混淆。例如:

/ *这是/ *错误评论* / * /

//但这是一个/ *好的评论* /

答案 7 :(得分:0)

//行注释有各种形式。直到行尾一切都将被忽略。行末的\使注释扩展到下一行。这是一个极端的情况:

\
/\
/|\
-+-\
\|/ \
 V   \