【发布时间】:2012-08-08 14:42:31
【问题描述】:
GCC 有一个很好的检测功能,可以让您在每次调用函数或每次函数返回时调用例程。
现在,我想创建自己的系统以使其可移植到其他编译器,并允许工具化我想要的功能(参数数量可能会有所不同),所以我在两种情况下都考虑了两个宏.我正在考虑制作某种配置文件,它只能通过定义子句激活。
#define FUNCT(t,function_name,...) \
(t) function_name(...) { \
(void) *func_pointer = &(function_name); \
start_data(func_pointer, myclock());
#define RETURN(x) {stop_data(func_pointer, myclock()); return (x);}
FUNCT(BOOL, LMP, const int prof, const int nmo))
if (nmo <= 5 ||
prof > (prof_l / 3)) {
.... do long operations....
RETURN(FALSE);
}
... do more....
RETURN(TRUE);
}
但我无法让它工作。有人可以帮我弄这个吗?或者这是一项难以完成的任务?
我想到的另一种选择是让函数在没有宏的情况下声明,如果无论如何都知道函数指针而不知道它的名称,就像在 VB 中当你和我一起调用表单时,它是一个通用别名。有可能吗?
【问题讨论】:
-
我认为您需要从
RETURN宏中删除;}
标签: c instrumentation