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了。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

Linux里如何查找文件内容

Linux查找文件内容的常用命令方法。   从文件内容查找匹配指定字符串的行: $ grep "被查找的字符串" 文件名 例子:在当前目录里第一级文件夹中寻找包...

4084
来自专栏mwangblog

Linux中的管道命令(二)

使用-v n设置起始编号为n,使用-i n设置增量为n,例如下面的命令将起始编号设置为4,将增量设置为2:

1412
来自专栏PHP技术

开发常用知识点

php允许传递任意个参数: function getArg($a="",$b=""){ echo "one:".$a."<br/>"; echo "two"...

39414
来自专栏用户2442861的专栏

shell脚本方便操作记录(持续添加)

http://blog.csdn.net/richerg85/article/details/44001501

601
来自专栏python3

python类(class)

类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例,把所有相似的功能都封装到一个类里,最理...

823
来自专栏Hongten

python开发_glob

=============================================

663
来自专栏技术博文

开启phpMyAdmin高级功能的设置方法

开启phpMyAdmin高级功能的设置方法 注:本文基于phpMyAdmin5.5 登录到phpMyAdmin以后,在主界面的底部,我们发现两条提示信息: 一...

2905
来自专栏北京马哥教育

shell脚本编程之终端打印

echo是用于终端打印的操作。默认情况下,echo在每次调用后添加一个换行符。 下面三条命令输出一样 html] view plain copy echo "...

2666
来自专栏地方网络工作室的专栏

Shell 命令行,实现一个获取任意位数的随机密码的脚本

Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本。这两天...

1826
来自专栏Laoqi's Linux运维专列

递归列出目录里面的文件

1136

扫码关注云+社区