我有功能: foo()
我想写一个#define把'infront' foo()(我想是一个垫片)来添加调试到前面foo().所以#define应该看看这个:
#define foo(dev) { \
printk("%s: get %lx\n", (dev)->name); \
foo_orig(dev); \
}
Run Code Online (Sandbox Code Playgroud)
然后我重命名foo()为foo_orig().
如果foo()在'隔离'中调用函数,这可以正常工作:
foo(dev);
Run Code Online (Sandbox Code Playgroud)
但是,如果它在一个内部被调用if()那么它是一个编译问题......
if (something() && foo(dev)) {
..
Run Code Online (Sandbox Code Playgroud)
我有没有解释过这个问题?这有解决方案吗?
问题是我真的需要垫片作为定义,因为我需要代码存在于调用函数而不是foo().[原因是因为出于调试原因我需要将EIP转储出调用函数(即我需要知道谁在调用foo()).
AFAIK 逗号运算符应该起作用:
#define foo(dev) (printk("%s: get %lx\n", (dev)->name), foo_orig(dev))
Run Code Online (Sandbox Code Playgroud)