繁体   English   中英

这是Delphi Xe8编译器错误吗?

[英]Is this a Delphi Xe8 compiler error?

以下语句可以正确编译:

procedure test ;
var    xx : string;
begin
   xx := 'a' + '}' + 'b';
end;

如果尝试使用块注释进行注释,则编译器会错误地将文本中正确的括号视为注释的结尾。

procedure test ;
var    xx : string;
begin
  {   xx := 'a' + '}' + 'b';  }
end;

我想念什么吗?

当您打开注释时,解析器仅忽略后面的文本,直到找到合适的注释终止为止。

  • //的情况下,终止是该行的结尾。
  • (*的情况下,终止是(*的下一个实例*)
  • {的情况下,终止是}的下一个实例。

由于编译器不会解析注释掉的文本,因此它发生在字符串内的} ,并确定注释已终止。

您声明:

编译器错误地将文本中正确的括号视为注释的结尾。

在我强调的案文中可以看出这种说法的误解。 注释开始后,解析器将不再关心语法,引号或其他任何内容。 它所做的只是读取源代码,直到找到注释终止。 它不理会该注释终止符所在的上下文。

因此,这不是编译器错误。 编译器的行为符合设计要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM