我想每次使用累加器调用一次宏,即;
%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
我没有成功。
需要注意的一点是,第三个参数可能需要部分应用。
答案 0 :(得分:5)
想出来。移除%[...]
周围的%[%3 i]
部分。
这是欺骗我,因为我正在测试它:
range 1, 8, {some_partially_applied_macro %1}
实际上必须在%1
之后最后使用逗号,或者NASM没有正确扩展它(它不会将其视为正确的逗号分隔宏)。