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 中当你和我一起调用 Form 时一样,它是一个通用别名。是否可以?