这里有一些示例代码,以便更好地理解我的意思。
有没有一种方法可以实现
int regular_function(void)
{
int x,y,z;
/** do some stuff **/
my_api_call();
return x;
}
...
void my_api_call(void)
{
char* caller = get_caller_file();
int line = get_caller_line();
printf("I was called from %s:%d\n", caller, line);
}
有没有一种方法可以实现
get_caller_file()
和get_caller_line()
?我见过/使用过一些技巧,比如将my_api_call
定义为函数调用,传递__FILE__
和__LINE__
宏。我想知道是否有一种方法可以在运行时访问该信息(假设存在),而不是在编译时访问?难道像Valgrind这样的工具不必要做类似的事情才能得到它返回的信息吗?