NO
Короткий ответ НЕТ
но с препроцессором это можно сделать вот так
Получение имени вызывающей функции в C (с использованием препроцессора)
Предполагается, что у вас есть функция f (), из которой вы хотите знать вызывающую функцию только для целей отладки.
Переименуйте эту функцию в f_func () и определите макрос f (), который вызывает версию f, которая печатает func , а затем вызывает f_func (), когда определено DEBUG.
В финальной версии информация удаляется путем вызова реальной функции f_func ()
Пример
#ifdef DEBUG
#define f(a,b,c) f_debug(a,b,c, __func__)
#else
#define f(a,b,c) f_func(a,b,c)
#endif
bool f_func(int par1, int par2, int par3)
{
do_somthing();
}
bool f_debug((int par1, int par2, int par3, const char calling_func_name[])
{
printf("f called from %s\n", calling_func_name);
f_func();
}
void a()
{
f();
}
void b()
{
f();
}
int main(int argc, char **argv)
{
a();
b();
return(0);
}
Результат:
когда определен DEBUG
f вызывается с
Ф звонил из б