Получить имя функции как символ (не как строку) - препроцессор C - PullRequest
1 голос
/ 25 сентября 2011

Есть ли способ в C , чтобы получить имя функции, по которой я могу использовать токен-вставку (я знаю __FUNCTION__ и __func__, но они не расширяются до имени на предисловииобработки, и я не хочу имя в виде строки).

Я хочу иметь возможность сделать что-то вроде: prefix_ ## __func_name__, чтобы в функции по имени func1() я мог получить доступ ксимвол prefix_func1

(возможно, я все еще могу использовать строку, а затем использовать dlsym, но хочу знать, есть ли в GCC более простые альтернативы, не беспокоясь о переносимости).

1 Ответ

2 голосов
/ 25 сентября 2011

Вы можете сделать идентификатор функции макросом, как в

#define FUNC1 func1

void FUNC1(void)
{
   ...
}

, а затем используйте FUNC1 для вставки токена.

...