添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 遊俠扎彪 GNU C之圆括号套花括号(表达式中的复合语句)
7 0

海报分享

原创

GNU C之圆括号套花括号(表达式中的复合语句)

GNU C对ANSI C做了很多扩展,除比较知名的0长度数组、typeof关键字之类的以外,还有一个比较有意思的,那就是圆括号里面套花括号的复合语句。举例如下:

在Linux Kernel代码中,有一个著名的宏:container_of,代码如下

image.png

这个宏使用了({s1;s2;})这样的语法,这是GNU C的一个扩展,具体可参考GCC手册,如下:

http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html#Statement-Exprs

简单点说,圆括号里面可以嵌套花括号,并且整体的值等于最后一个语句的值,比如int i =({int a =3; a;});这个语句执行后,i 就等于3了。

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。