gpt4 book ai didi

c 定义多行宏?

转载 作者:太空狗 更新时间:2023-10-29 16:42:06 25 4
gpt4 key购买 nike

#define DEBUG_BREAK(a)\
if ((a)) \
{\
__asm int 3;\
}

我已经定义了一个宏,并尝试使用它

#include "test_define.h"
int main()
{
DEBUG_BREAK(1 == 1);
return 0;
}

但是这个示例不会编译。编译器会提示括号没有闭合。如果我在源文件末尾添加另一个 },它会编译。

这个宏有什么问题?

最佳答案

#define DEBUG_BREAK(a)\
if ((a)) \
__asm int 3;

工作正常但是

#define DEBUG_BREAK(a)\
if ((a)) \
{\
__asm int 3;\
}

不会!我想任何人都能猜到为什么!!新的线路运算符(operator)是制造问题的家伙!

需要

 __asm int 3;\
}

作为

__asm int 3; }

where ; 注释掉后面的内容(在汇编中)。所以我们会错过一个}

关于c 定义多行宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16685211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com