如果从if()块中调用它,则会发出#define问题

Dom*_*ran 5 c c-preprocessor

我有功能: 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()).

Pub*_*bby 2

AFAIK 逗号运算符应该起作用:

#define foo(dev) (printk("%s: get %lx\n", (dev)->name), foo_orig(dev))
Run Code Online (Sandbox Code Playgroud)