宏编写与格式化特效全解析
1. 宏调试工具与技巧
在编写宏时,我们常常需要定位输入文件中错误或其他事件发生的位置。有几个有用的工具和方法可以帮助我们实现这一目的。
首先, .tm 命令可以用于输出调试信息。例如:
.tm
On input line \\n(.c, the value of BC was \\n(BC
这里使用了双反斜杠,因为这个例子是在宏定义内部。有时候,了解格式化程序在文件中处理的进度很有帮助。最难追踪的错误是那些导致格式化程序在没有生成输出块的情况下退出的错误。可以在页面顶部宏中插入如下形式的一系列消息:
.tm At top of page \\n%, I‘ve processed \\n(.c input lines
这有助于确定格式化程序的处理进度,从而定位错误。如果格式化程序处理的是标准输入而不是单个文件, .c 寄存器将为空。
另一个在打印错误消息时可能有用的寄存器是 .F ,它包含当前文件的名称。 .R 寄存器也很有用,它包含可用数字寄存器的数量。可以打印其值,以查看是否即将耗尽数字寄存器或接近其限制。
虽然我们使用这些工具来调试宏,但它们并不总是能帮助我们应对宏包的复杂性。不同宏之间的关系并不总是显而易见的。例如,通常可以从输出中判断是哪个宏导致了问题
超级会员免费看
订阅专栏 解锁全文
1059

被折叠的 条评论
为什么被折叠?



