Пусть макрос создаст метку:
#define MYMACRO(label, a, b) \
label : printf("I have arg: %s, %s with Label: %s at line %d", \
(a), (b), #label, __LINE__)
Тогда
MYMACRO(mylabel, "a1", "a2");
оценивается как
mylabel : printf("I have arg: %s, %s with Label: %s at line %d", ("a1"), ("a2"), "mylabel", 42);