宏中的{} {(0)与({}}的优点是什么?

时间:2015-05-27 18:16:10

标签: c macros

关于在宏中使用do { ... } while(0),有很多关于Stack Overflow的问题,但这有点不同。我理解为什么do { ... } while(0)用于在宏扩展中包装多行代码。但我经常看到另一种形式:({ ... })

({ })形式的优势在于它是一个表达式并且可以具有“返回值”。它(主观地)也比do { } while(0)读得更好。那为什么不总是使用它?在宏中使用do { } while(0)有什么好处?

1 个答案:

答案 0 :(得分:30)

因为({...})a GCC extension