有没有办法逃避结束括号评论?

时间:2013-07-06 23:17:01

标签: delphi escaping comments

我正在为我的Delphi代码添加注释以获取文档。我想要记录的一件事是JSON结构,所以我试图将样本JSON数据注释到代码中。但是,JSON广泛使用了波浪形括号{ },巧合的是它也用于Delphi中的注释。

因此,我无法想出添加这些评论的方法。通常对于文档注释块我使用{ },例如:

{
  This unit does this and that.

  Use TSomeComponent to do bla bla
}

当我尝试记录JSON数据时,结束括号}结束注释 - 即使该行以单行注释//作为前缀,所以即使这样也不起作用:< / p>

{
  This is how the JSON structure looks:

//    {
//      "some_string": "value",
//      "some_object": {
//        "something": 123
//      }, //<-- Compiler detects this comma
//      "something_else": "some other string"
//    }
}

只要有一个右括号},评论的行就会被取消注释,即使它的前缀是两个斜杠。所以Delphi在这个括号之后拿起逗号。所以最后,我无法弄清楚我可以在代码中记录JSON样本的任何方式。

我甚至尝试在JSON块周围使用(* *)但仍然没有运气。

有什么方法可以解决这个问题还是我坚持下去?

1 个答案:

答案 0 :(得分:13)

我在输入这个问题时发现了这个解决方案,所以现在我正在回答这个Q / A风格......

当评论块首次开始时,如上面问题中的代码所示,它以一个左括号{开头。因此,编译器迫切希望找到一个结束括号,即使该结束括号位于另一个注释代码行中。但是,如果此注释块中的每一行都以两个斜杠//而不是左括号{开头,则编译器将不会查找结束括号}。因此,不是上面问题中的代码,而是应该如何编写:

//  This is how the JSON structure looks:
//  
//    {
//      "some_string": "value",
//      "some_object": {
//        "something": 123
//      },
//      "something_else": "some other string"
//    }

因此,只要您不使用左括号启动注释块,编译器就会在找到结束括号时尝试结束注释块。

此外,使用(* *)应该可以正常工作,只要您在使用{后不使用它。用(**)封闭整个块,编译器将忽略内部的任何{},如下所示:

(*
  This is how the JSON structure looks:

    {
      "some_string": "value",
      "some_object": {
        "something": 123
      },
      "something_else": "some other string"
    }
*)

基本上,从您开始发表评论的那一刻起,无论是//{还是(*,它都会忽略任何其他类型评论的进一步开放 - 它将会只是寻找自己的评论类型的结束。因此//将查找该行的结尾,{将查找}(*将查找*)