В gcc, похоже, что ссылка на результаты макро-расширения позже внутри этого же расширения не работает. Например:
#define TESTMACRO(name) \
static int name##_func(int solNo) { \
return (solNo); \
}\
static int name##Thing = {0,##name##_func},NULL,{"", capInvSw##name}};
TESTMACRO(stuff)
Это приводит к таким ошибкам:
test.c:7:29: error: pasting "," and "stuff" does not give a valid preprocessing token
static int name##Thing = {0,##name##_func},NULL,{"", capInvSw##name`}};
^
test.c:9:1: note: in expansion of macro ‘TESTMACRO’
TESTMACRO(stuff)
Я ожидал бы иметь функцию с именем stuff_func, созданную и переданную в stuffThing. Я считаю, что это работает в других компиляторах. Каков эквивалентный способ сделать это в gcc?