Pascal程序语法错误:参数列表中in/out关键字不被识别
解决Pascal过程参数
in/out关键字识别报错的问题 报错原因
in和out是Delphi、Free Pascal等现代Pascal方言引入的参数修饰符,标准Pascal(如Turbo Pascal)并不支持这些关键字,因此编译器会抛出Fatal: Syntax error, "identifier" expected but "in" found的语法错误。
两种解决途径
更换支持的编译器:如果可以切换编译器,使用Free Pascal或Delphi这类支持
in/out关键字的现代Pascal环境,原代码无需修改(Free Pascal需注意不要启用严格标准模式,如-MISO)。修改代码适配标准Pascal语法:
- 标准Pascal中,
in对应的是值传递参数,默认无需额外关键字,直接定义参数即可; out对应的是引用传递的输出参数,用var关键字替代(var参数支持双向传递,能实现out的输出效果)。
- 标准Pascal中,
修改后的正确代码如下(同时修复了原代码中Loesung2未赋值的bug):
procedure LoesungBestimmen ( a,b,c : real; var Loesung1, Loesung2 : real; var gibtLoesung : boolean); { bestimmt die Loesungen der Gleichung a*x*x + b*x + c = 0.0 unter der Vorbedingung: a<>0.0 } var d : real; {Hilfsvariable} begin d := b * b - 4.0 * a * c; if (d < 0.0) or (a = 0.0) then { nicht loesbar oder Vorbedingung nicht erfuellt } gibtLoesung := false else begin gibtLoesung := true; d := sqrt (d); Loesung1 := - (b - d) / (2.0 * a); Loesung2 := - (b + d) / (2.0 * a) end end; { Loesung bestimmen }
内容的提问来源于stack exchange,提问作者Thorsten Dieck
相关产品推荐
相关产品推荐

