我继承了具有IF Endif语句的VFP代码,其中endif编码为ENDIF- * 9无论出于何种原因,它都会通过编译器,并且不会产生运行时错误。有人知道为什么会这样吗?
答案 0 :(得分:1)
它不是特定于ENDIF。它也适用于endfor,enddo,endscan ...我认为VFP只关心看到“endif”这个词,并将其作为评论放弃。
答案 1 :(得分:1)
来自DO WHILE ... ENDDO的帮助:
Comments can be placed after DO WHILE and ENDDO on the same line. The comments are ignored during program compilation and execution.
我已经知道并且总是认为是这种情况。但是,在您的示例中,您不会在关键字的结尾和“额外”的开头之间留下任何空格。文本。我的猜测是VFP中的词法分析器识别 - (我也测试了+)作为ENDIF(或ENDDO等)的终止符,并将该行的其余部分视为注释。如果您在ENDIF之后立即有额外的东西(如ENDIFblah),VFP不会识别该关键字并将其视为垃圾,导致语法错误。