我想每次使用累加器调用N次宏,即;
%macro foo 1
range 1, 8, {some_partially_applied_macro %1}
%endmacro
相当于
%macro foo 1
some_partially_applied_macro %1, 1
some_partially_applied_macro %1, 2
some_partially_applied_macro %1, 3
...
some_partially_applied_macro %1, 8
%endmacro
我尝试编写以下内容(及其几种变体):
%macro range 3
%assign i %1
%rep %2
%[%3 i]
%assign i i+1
%endrep
%endmacro
我没有成功。
需要注意的重要一点是,第三个参数可能需要部分应用。
最佳答案
弄清楚了。删除%[...]
周围的%[%3 i]
部分。
它在欺骗我,因为我正在像这样测试它:
range 1, 8, {some_partially_applied_macro %1}
实际上,在
%1
之后必须有一个逗号,否则NASM无法正确扩展它(它没有将其视为正确的逗号分隔宏)。