kev*_*vin 7 c gcc gcc-extensions
在我的C语言练习中,我面对一个表达式然后我简化如下:
int a=({10;});
Run Code Online (Sandbox Code Playgroud)
它是一个合法的表达式,因为它超越了gcc编译器.请关注这一部分:({10;}).有人能解释一下吗?越详细越好.谢谢!
这是一个声明表达式.它是一个gcc扩展,根据文档6.1表达式中的语句和声明:
复合语句中的最后一件事应该是一个后跟分号的表达式; 此子表达式的值用作整个构造的值.
所以对于这段代码:
int a=({10;});
Run Code Online (Sandbox Code Playgroud)
根据这些规则10,将分配给的值a.
这个扩展是Linux内核中使用的很多gcc扩展,虽然链接的文章实际上并不包含语句表达式,但这个内核新手FAQ条目解释了在Linux内核中使用语句表达式背后的一些原因.
由于gcc文档注意到使用-pedantic选项进行编译,因此当您使用gcc扩展时会向您发出警告.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |