为什么\def\xxx{#1}
会报错:“!未定义的控制序列”?
它可能由于 的内容而发生#1
?
扩展的问题吗?
答案1
\message{\def\xxx{#1}}
\bye
生产
! Undefined control sequence.
l.2 \message{\def\xxx
{#1}}
?
因为在扩展上下文中(例如\message
或\write
或\edef
标记会扩展但不会发生赋值)。
因此\def
保持不变,\def
然后\xxx
会扩展,但由于未定义,因此会出现错误。
如消息中的换行符所示,{#1}
尚未处理且与错误无关。