多行注释中注释的有效性是相对比较难以理解的,通过一组概念和一组例子去理解多行注释的有效性。
注释从注释起始符 /* 开始,到注释终止符 */ 结束,期间的所有东西均作为注释的内容。
/* 或 */如果出现在字符串字面值内部,就不能起注释定界符的作用。
一个注释可能跨越多行,但它不能嵌套于另一个注释中。
1、多行注释起始符/* 在行注释符//之后。通过如下示例 编译异常 可知多行注释符起始符/* 在单行注释符// 后是无效的,无法与多行注释结束符*/ 形成匹配的一组注释符注释掉printf()语句 从而让程序编译失败
2、多行注释起始符/* 在"“中。如果多行注释起始符/* 有效,此时编译输出应该是空白字符。运行输出了printf()中的字符,则在”"中的多行注释起始符/* 是无效的。
3、起始符/* 有效,多行注释结束符*/ 在// 后。编译正常,说明多行注释结束符*/ 结束了起始符/* 的注释,此时单行注释符//被认为是多行注释的一部分。
4、起始符/* 有效,多行注释结束符 /在""中。
5、多行注释起始符在/**/中。多行注释符之间嵌套,错误原因第7行无法识别 ‘/’ token,7行之前的/ /* */ 是正常的。
通过以上示例,可以知道第一个有效的(不在//或者"“中)多行注释起始符和第一个结束符(可以在//之后或者在”"内)之间的所有字符都是作为注释的一部分
参考文献
Reek, K. A. (2008. April). POINTES ON C. by 徐波. 北京: 人民邮电出版社出版发行 p23 pp448