6.7. Макросы с несколькими групповыми аргументами
Возможно использовать и несколько групповых аргументов. В этом случае определение макроса не будет выглядеть как:
macro a [grp1],[grp2]
так как тут не ясно какой аргумент какой группе принадлежит. Исходя из этого делают так:
Синтаксис:
macro a [grp1,grp2]
В этом случае каждый нечётный аргумент относится к группе grp1, а каждый чётный — к grp2:
macro a [grp1,grp2]
{
forward
l_#grp1:
forward
l_#grp2:
}
a 1,2,3,4,5,6
будет:
l_1:
l_3:
l_5:
l_2:
l_4:
l_6:
Или ещё:
macro ErrorList [name,value]
{
forward
ERROR_#name = value
}
ErrorList
NONE,0,
OUTOFMEMORY,10,
INTERNAL,20
получим:
ERROR_NONE = 0
ERROR_OUTOFMEMORY = 10
ERROR_INTERNAL = 20
Конечно же, может быть больше 2х групп аргументов:
macro a [g1,g2,g3]
{
common
db g1
db g2
db g3
}
a 1,2,3,4,5,6,7,8,9,10,11
будет:
db 1,4,7,10
db 2,5,8,11
db 3,6,9