Мне нужно получить имя функции, которая передается в функцию C. Я надеюсь, что какой-нибудь макрос c позволит во время компиляции получить ascii-версию имени функции C.
void foo( void )
{
// nothing
}
typedef void (*pFunction)( void );
void ScheduleCallback( pFunction fName, int x, int y )
{
// Is it possible to get the name "foo" in this routine?
}
main()
{
ScheduleCallback( foo, 3, 4 );
}
Есть ли макрос для параметра в c?
Я попытался использовать FUNCTION, а затем выполнить макрос для вызывающей процедуры, например
ScheduleCallback( foo, 3, 4, __FUCNTION__ ).
С этим я бы получил «основной».





Как кто-то еще предложил, проще всего просто жестко закодировать имя и передать его. Чтобы не вводить имя дважды, я обычно использую макрос для такого рода вещей, например:
#define FUNC_WITH_NAME(x) x,#x
typedef void (*pFunction)();
void foo() {
}
void ScheduleCallback(pFunction func, char *name, int x, int y) {
printf("scheduling %s\n", name);
}
int main() {
ScheduleCallback(FUNC_WITH_NAME(foo),3,4);
}
Простым способом было бы передать имя как
ScheduleCallback( foo, 3, 4, "foo");. Поскольку вы жестко закодировали имя идентификатора функции, почему бы не сделать то же самое с текстовым именем?