[英]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.