Macros 宏m4能否支持嵌套定义的子句参数

Macros 宏m4能否支持嵌套定义的子句参数,macros,m4,Macros,M4,如何使用嵌套定义唯一参数 define(`Honestly',`$1, define(`Does',`Iam$1')Does(Honest), $2')dnl Honestly(Before, After) 实际结果: Before, IamBefore, After 预期结果: Before, IamHonest, After 如何实现预期结果?删除define周围的记号: define(`Honestly',$1-define(`Does',`Iam$1')Does(Honest)-

如何使用嵌套定义唯一参数

define(`Honestly',`$1, define(`Does',`Iam$1')Does(Honest), $2')dnl

Honestly(Before, After)
实际结果:

Before, IamBefore, After
预期结果:

Before, IamHonest, After

如何实现预期结果?

删除
define
周围的记号:

define(`Honestly',$1-define(`Does',`Iam$1')Does(Honest)-$2)dnl
Honestly(Before, After)

分解
$1
令牌:

define(`Honestly',`$1, define(`Does',`Iam$'`1')Does(Honest), $2')dnl
Honestly(Before, After)

坏主意!!因为你可能有任何逗号“,”在那里!!您将得到错误“defined extra argument”(定义的额外参数)
诚实地(“Before,foo”,“After,baz”)
工作(将引号替换为m4引号)。正常工作!谢谢@tee先生如果对你有效,请接受答案(这样你可以获得+2个代表)