要减少要写入的行数,我将按以下方式使用宏:
V10 H20 M30
这很有效,因为我只需要使用编码函数调用(带有4个参数)和2个或更多其他语句的宏(带有2个参数)。
当此函数调用是另一个函数的参数时出现问题。 例如,假设我需要以下代码:
#define FUNC(a, b) func(a, b, threadId, sizeof(a)); \
do something 1; \
do something 2;
有没有办法使用宏或任何其他替代方法实现此目的? 即我期待的是:
func1(par1, func(a, b, c, d));
do something 1;
do something 2;
答案 0 :(得分:3)
我不确定你实际上是试图实现的目标,但取而代之的是:
#define FUNC(a, b) func(a, b, threadId, sizeof(a)); \
do something 1; \
do something 2;
由此(假设a
和b
参数的类型为int
):
int FUNC(int a, int b)
{
int returnvalue = func(a,b,threadId, sizeof(a));
do something 1;
do something 2;
return returnvalue;
}
应该做的。
答案 1 :(得分:0)
您可以尝试使用方括号{}隔离代码。但是你的想法不是我推荐的,因为代码变得非常难以理解和调试。
#define FUNC(a, b) { func(a, b, threadId, sizeof(a)); \
do something 1; \
do something 2; }
但是如果你试图将它作为参数发送到另一个函数,它仍然无法工作,因为你没有返回任何用作参数的东西(没有地址,没有价值)