mag(cc)ic

May 15, 2010 15:56


Такой вот дивный макрос
/* Allocate memory for type and fill it with zero-valued bytes */ #define new_zeroed(type) ({ \ type *__x = malloc(sizeof(type)); \ memset(__x, 0, sizeof(type)); \ __x; })
заменяет собой специализированные функции вида
static inline struct Foo * new_zeroed_Foo(void) { struct Foo *new = malloc(sizeof(struct Foo)); memset(new, 0, sizeof(*new)); return new; }
Как этот синтаксис работает - понятия не имею. (Просветите дурака?)
Идею списал отсюда:
http://lxr.linux.no/#linux+v2.6.33/tools/perf/util/include/linux/kernel.h#L26
* * *
Update: Ага. По официальной версии оно зовётся compound statement. А `gcc -pedantic' ругается на него, называя braced-group. Что ж, будем знать...
Вот ещё на stackoverflow интересное пишут про ISO C equivalent.

tips, code, gcc, c

Previous post Next post
Up