这是一个关于 ANSI Lisp 规范的一致性实现的非常技术性的问题:
在第 2.3.4 节中,它表示读取为当前包中不可用的符号的令牌将作为当前包中的新符号进行埋葬。
在第 3.1.2.1 节中,它表示如果符号未绑定,则会给出错误。
REPL 迭代之间的未绑定符号会发生什么情况?符合要求的实现是否会从当前包中删除未绑定的符号,或者是否会保留保留符号直到 REPL 占用所有可用内存?
我有一个 C 文件,其中包含
#define A f
#define B (
#define C x
#define D )
#define f(x) 1
int main () {
A B C D;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行预处理器时,我得到
int main () {
f ( x );
}
Run Code Online (Sandbox Code Playgroud)
并且最后一个宏不会被扩展。
我究竟做错了什么?