如何在C/ c++中包含宏的行末尾添加语句
How to add a statement at the end of a line containing a macro in C/C++?
为了减少要写的行数,我以以下方式使用宏:
#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;
(假设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;
}
您可以尝试用括号{}隔离代码。但是我不推荐您的想法,因为代码变得非常难以理解和调试。
#define FUNC(a, b) { func(a, b, threadId, sizeof(a));
do something 1;
do something 2; }
但是如果你试图将这个作为参数发送给另一个函数它仍然不会工作,因为你没有返回任何东西作为参数使用(没有地址,没有值)
相关文章:
- 在大括号内添加语句会更改代码功能?
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- c++ IF 语句执行,但添加 ELSE 会显示错误
- 在我的功能中添加IF语句
- 我是否应该在包含语句的末尾添加分号
- 为什么if语句和变量声明要比循环中的添加更快
- 添加print语句可以将代码的速度提高一个数量级
- C++:添加逻辑上正确的 if 语句会使我的程序崩溃
- 无法在代码qmake_cxxflags = -std = C 14中添加以下语句
- 添加 cout 语句会更正输出
- 当我需要添加一个无用的返回语句时,C++约定是什么
- 添加printf语句时,NULL指针异常消失
- 在IF语句中添加时出错
- 如何在 switch 语句之后将变量添加到另一个变量
- C++,在类变量中添加条件语句
- 添加 printf 语句时出现运行时错误
- 如何添加语句if-else
- Visual Studio在添加if语句后显示C++模糊性错误
- 为什么必须在'using'语句之前添加额外的令牌?
- 在C++中添加布尔表达式切换语句