C语言malloc创建struct同时初始化成员变量
写过C程序都知道,malloc了新的struct之后,经常跟着一大串的赋值。其实这些可以用一行漂亮的代码搞定。
先上代码:
1 |
使用示例:
1 | struct S { |
这段代码仅在GCC里work,因为用到了GCC的一个扩展特性,加了括号的block(({ })
)可以带有返回值,即最后一个语句的返回值。
还用到了C99的一个feature,就是那个非常酷炫的.field =
的赋值。
另外三个点的宏定义,看例子就差不多明白了吧。
Ref. http://stackoverflow.com/questions/2679182/have-macro-return-a-value http://stackoverflow.com/questions/3016107/what-is-tagged-structure-initialization-syntax http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html