这个问题可能同样适用于具有类似 C 多行注释的其他语言。这是我遇到的问题。我正在 Eclipse 中处理 Java 代码,我想注释掉一段代码。然而,有一个字符串包含字符序列“*/”,并且 Eclipse 认为注释应该在那里结束,即使它位于字符串内部。它给了我很多错误并且无法构建。

/*
   ... some Java code ...
   ... "... */ ..." ...
   ... more Java code ...
*/

Java 规范与 Eclipse 对我的多行注释的解释是否匹配?我认为 Java 和/或 Eclipse 可以解决此类问题。

有帮助吗?

解决方案

日食是正确的。注释内没有解释上下文(没有转义等)。看 JLS§3.7.

其他提示

在 Eclipse 中,您可以突出显示要注释掉的源代码部分,并使用 Ctrl+/ 对突出显示部分中的每一行进行单行注释 - 在行的开头放置一个“//”。

或者,如果您确实想对所选内容进行块注释,请使用 Ctrl+Shift+/ 组合。它将检测您选择中的块注释。然而,撤消这一点比单行注释更难。

是的,我注释掉代码只是为了进行快速测试。我已经通过以另一种方式注释代码来测试了我需要的内容;我只是好奇 Java 和/或 Eclipse 的一个奇怪的错误特性。

简单的测试表明 Eclipse 是正确的:

public class Test {
  public static final void main(String[] args) throws Exception {
    String s = "This is the original string.";
    /* This is commented out.
    s = "This is the end of a comment: */ ";
    */
    System.out.println(s);
  }
}

这无法编译:

Test.java:5: unclosed string literal
    s = "This is the end of a comment: */ ";

我可能会有助于执行“批量”多行注释,以便它用“//”注释每一行。Idea中的Ctrl+“/”用于注释和取消注释所选行,Eclipse应该有类似的功能。

我经常只用 // 对于内联评论,并使用 /* */ 仅用于按照您的方式注释掉大块。

许多开发人员仍然会使用 /* */ 进行内联注释,因为这是他们所熟悉的,但他们都会遇到这样的问题,在 C 中这并不重要,因为你可以 #if 0把东西拿走。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top