我有一位合著者,他定义了许多宏,例如\newcommand{\foo}[0]{foo}
,明确给出了参数的数量,即使它是零,而我以前一直使用和看到\newcommand{\foo}{foo}
没有参数的宏。
这两个版本的行为上是否存在任何可能的差异,或者除了可读性之外还有什么理由选择其中一个版本?
答案1
没有区别,实际上[0]
是可选参数的默认值,因此在第一次扫描可选参数之后,它们遵循相同的代码路径。
我有一位合著者,他定义了许多宏,例如\newcommand{\foo}[0]{foo}
,明确给出了参数的数量,即使它是零,而我以前一直使用和看到\newcommand{\foo}{foo}
没有参数的宏。
这两个版本的行为上是否存在任何可能的差异,或者除了可读性之外还有什么理由选择其中一个版本?
没有区别,实际上[0]
是可选参数的默认值,因此在第一次扫描可选参数之后,它们遵循相同的代码路径。