我不知道这是否可能,我想像参数一样在宏中传递指令块。我将向您展示一个示例:
#define ADD_MACRO(size, BLOCK){ for(int i=0; i<size; i++){\
BLOCK} }
你怎么看待这件事?
感谢帮助
给定宏的唯一问题是它不处理逗号BLOCK
。可变宏参数允许使用逗号:
#define ADD_MACRO(size, ...) do { for(int i=0; i<size; i++){\
__VA_ARGS__} } while(0)
(此外,常见的做法是将语句宏括在do … while(0)
强制用户包含分号。)
(当然,原来的问题可能有更好的解决方案。预处理器是一个钝器。这是针对所述问题的预处理器解决方案。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)