从恐龙时代开始,Turbo Pascal和如今的Delphi都有一个Write()和WriteLn()过程,它们静静地处理一些整洁的事情。
参数的数量是可变的。
每个变量可以是各种各样的类型。您可以提供整数,双精度数,字符串,布尔值,并将它们以任何顺序混合在一起;
您可以为每个参数提供其他参数:
写('Hello':10,'World!':7); //对齐参数
它甚至以特殊方式显示在代码完成下拉菜单中:
写([var F:File]; P1; [...,PN])
WriteLn([var F:File]; [P1; [...,PN]])
既然我已经输入了这个,我已经注意到Write和WriteLn在代码完成下拉列表中没有相同的括号。因此,它看起来不是自动生成的,而是由某人硬编码的。
无论如何,我本人是否可以编写像这样的程序,还是所有这些都是神奇的硬编码编译器的诡计?
最佳答案
Writeln是我们所谓的编译器“魔术”函数。如果查看System.pas,将找不到被声明为您期望的内容的Writeln。编译器从字面上将其分解为对各种特殊运行时库函数的单独调用。
简而言之,如果不修改编译器,就无法实现自己的版本,该版本可以执行与内置writeln相同的所有功能。