如何在C/ c++中包含宏的行末尾添加语句

How to add a statement at the end of a line containing a macro in C/C++?

本文关键字:语句 添加 包含宏 c++      更新时间:2023-10-16

为了减少要写的行数,我以以下方式使用宏:

#define FUNC(a, b)  func(a, b, threadId, sizeof(a)); 
                      do something 1;                 
                      do something 2;    

这工作得很好,因为我只需要使用宏(带2个参数)编码函数调用(带4个参数)和2个或更多其他语句。

当此函数调用是另一个函数的形参时,会出现问题。例如,假设我需要以下代码:

func1(par1, func(a, b, c, d));
do something 1;
do something 2;

是否有一种方法来实现使用宏,或任何其他替代方案?例如,我期待这样的内容:

func1(par1, FUNC(a, b)); //This statement(using macros) should transform into the above code after the preprocessing step. 

我不知道你是什么实际上试图实现,但替换这个:

#define FUNC(a, b)  func(a, b, threadId, sizeof(a)); 
                  do something 1;                 
                  do something 2;  
(假设ab参数的类型为int):
int FUNC(int a, int b)
{
  int returnvalue = func(a,b,threadId, sizeof(a));
  do something 1;
  do something 2;
  return returnvalue;
}

您可以尝试用括号{}隔离代码。但是我不推荐您的想法,因为代码变得非常难以理解和调试。

#define FUNC(a, b) { func(a, b, threadId, sizeof(a)); 
                      do something 1;                 
                      do something 2; }

但是如果你试图将这个作为参数发送给另一个函数它仍然不会工作,因为你没有返回任何东西作为参数使用(没有地址,没有值)