В Linux макрос container_of
заключен в, казалось бы, «лишние» скобки:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr);
(type *)( (char *)__mptr - offsetof(type,member) );})
Вместо него мы можем просто использовать
#define container_of(ptr, type, member) { \
const typeof( ((type *)0)->member ) *__mptr = (ptr);
(type *)( (char *)__mptr - offsetof(type,member) );}
?
Обязательные скобки или просто для предосторожности?