这是一个关于宏的更具理论性的问题(我认为)。我知道宏获取源代码并生成目标代码而不对其进行评估,从而使程序员能够创建更通用的句法结构。如果我必须对这两个宏系统进行分类,我会说有“C 风格”宏和“Lisp 风格”宏。
调试宏似乎有点棘手,因为在运行时,实际运行的代码与源代码不同。
调试器如何根据预处理的源代码跟踪程序的执行?是否必须设置特殊的“调试模式”才能捕获有关宏的额外数据?
在 C 语言中,我可以理解您会为调试设置编译时开关,但解释性语言(例如某些形式的 Lisp)如何做到这一点?
很抱歉没有尝试这个,但 lisp 工具链需要的时间比我花费的时间要多。