GNU C对ANSI C做了很多扩展,除比较知名的0长度数组、typeof关键字之类的以外,还有一个比较有意思的,那就是圆括号里面套花括号的复合语句。举例如下:
在Linux Kernel代码中,有一个著名的宏:container_of,代码如下
这个宏使用了({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 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。