c 定义多行宏?

2023-12-21

#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;\
}

没有!我想任何人都可以猜到为什么!新的线路操作员是制造问题的家伙!

It takes

 __asm int 3;\
}

as

__asm int 3; }

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c 定义多行宏? 的相关文章

随机推荐