Получить ярлык рядом с моим макросом и C-кодом - PullRequest
1 голос
/ 27 октября 2010

У меня есть макрос, который я использую для `goto ', я хочу, чтобы макрос знал о метке.

Пример:

#define MYMACRO((a),(b)) printf("I have arg: %s, %s with Label: %s at line %d", (a), (b), _GETLABEL_, __line__)    
mylabel: MYMACRO("a1","a2")

Это должно вывести: У меня есть аргумент: a1, a2 с меткой: mylabel в строке 4

Возможно ли реализовать GETLABEL ?Это будет портативно?

Спасибо заранее, Тарек

1 Ответ

2 голосов
/ 27 октября 2010

Пусть макрос создаст метку:

#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);
...