如何定义一个可用于在C中记录函数调用的宏?

sor*_*rin 1 macros visual-c++ c-preprocessor

我发现一些代码用宏包装函数调用NAME(),

#define NAME(x) x
...
m_strTemp.Format("x key:0x%X", NAME(a_function)(a_param));
Run Code Online (Sandbox Code Playgroud)

问题是如何定义NAME()宏,以便记录使用的函数TRACE().

类似的东西#define NAME(x) TRACE("x");x不起作用,因为NAME()宏包装的函数可能返回东西,有时它们像上面的例子一样被使用.

注意,这必须与VC++ 2010编译器一起使用.

caf*_*caf 6

这可能会做你想要的:

#define NAME(x) (TRACE(#x), x)
Run Code Online (Sandbox Code Playgroud)

(注意,您可以将函数指示符括在parantheses中,例如(strlen)("foo")允许).