这是一些示例代码,可以让您了解我想要什么。
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()
and get_caller_line()
?我已经看到/使用了像#define
ing这样的技巧作为传入和宏my_api_call
的函数调用。我想知道是否有办法在运行时而不是编译时访问该信息(假设它存在)?像 Valgrind 这样的东西难道不是必须做这样的事情才能获得它返回的信息吗?__FILE__
__LINE__