如:
int fun(){}; //怎么在fun中输出调用fun()函数的函数名称
int main()
{
fun();
}
急求!
8 个解决方案
#1
有个宏定义
__FUNCTION__
这个宏定义就是保存的函数的名称
__FUNCTION__
这个宏定义就是保存的函数的名称
#2
void *array[2];
size_t size;
char **strings;
size_t i;
size = backtrace (array, 2);
strings = backtrace_symbols (array, size);
printf ("调用者%s\n", strings[1]);
free (strings);
在fun中添加上面这段代码就可以输出调用fun函数的函数名称
要加上#include <execinfo.h>
并且编译时要加上-rdynamic选项
#3
不错,学习了,谢谢2楼的同学。
在2楼的基础上稍微改了一下:
在2楼的基础上稍微改了一下:
#include <stdio.h>
#include <execinfo.h>
#include <stdlib.h>
void f()
{
void *array[16];
size_t size;
char **strings;
size_t i;
size = backtrace (array, 16);
strings = backtrace_symbols (array, size);
for (i=0; i<size; i++)
printf ("%s\n", strings[i]);
printf ("\n");
free (strings);
}
void f1()
{
f();
}
void f2()
{
f1();
}
int main()
{
f();
f1();
f2();
return 0;
}
#4
很好很强大...
#5
相当于查看了函数的调用堆栈,对吧
#6
2楼很强大
#7
int fun( void )
{
printf( "Function name is: %s\n", __FUNCTION__ );
return 0;
}
#8
类似的宏还有:
__FILE__ :源文件名称(字符串)
__LINE__ :所在源文件的行号(整数)
__DATE__ :含有形式为月/日/年的串,表示源文件被翻译到代码时的日期(字符串)
__TIME__ :包含程序编译的时间 (字符串)
__FILE__ :源文件名称(字符串)
__LINE__ :所在源文件的行号(整数)
__DATE__ :含有形式为月/日/年的串,表示源文件被翻译到代码时的日期(字符串)
__TIME__ :包含程序编译的时间 (字符串)
#1
有个宏定义
__FUNCTION__
这个宏定义就是保存的函数的名称
__FUNCTION__
这个宏定义就是保存的函数的名称
#2
void *array[2];
size_t size;
char **strings;
size_t i;
size = backtrace (array, 2);
strings = backtrace_symbols (array, size);
printf ("调用者%s\n", strings[1]);
free (strings);
在fun中添加上面这段代码就可以输出调用fun函数的函数名称
要加上#include <execinfo.h>
并且编译时要加上-rdynamic选项
#3
不错,学习了,谢谢2楼的同学。
在2楼的基础上稍微改了一下:
在2楼的基础上稍微改了一下:
#include <stdio.h>
#include <execinfo.h>
#include <stdlib.h>
void f()
{
void *array[16];
size_t size;
char **strings;
size_t i;
size = backtrace (array, 16);
strings = backtrace_symbols (array, size);
for (i=0; i<size; i++)
printf ("%s\n", strings[i]);
printf ("\n");
free (strings);
}
void f1()
{
f();
}
void f2()
{
f1();
}
int main()
{
f();
f1();
f2();
return 0;
}
#4
很好很强大...
#5
相当于查看了函数的调用堆栈,对吧
#6
2楼很强大
#7
int fun( void )
{
printf( "Function name is: %s\n", __FUNCTION__ );
return 0;
}
#8
类似的宏还有:
__FILE__ :源文件名称(字符串)
__LINE__ :所在源文件的行号(整数)
__DATE__ :含有形式为月/日/年的串,表示源文件被翻译到代码时的日期(字符串)
__TIME__ :包含程序编译的时间 (字符串)
__FILE__ :源文件名称(字符串)
__LINE__ :所在源文件的行号(整数)
__DATE__ :含有形式为月/日/年的串,表示源文件被翻译到代码时的日期(字符串)
__TIME__ :包含程序编译的时间 (字符串)