En Linux, container_of
macro está encerrado en paréntesis, aparentemente "extra":¿Por qué necesitamos paréntesis alrededor de macro de bloque?
#define container_of(ptr, type, member) ({ \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));})
En lugar de ello, puede que sólo tiene que utilizar
#define container_of(ptr, type, member) { \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));}
?
¿Los paréntesis son obligatorios o solo por precaución?
Esto se debe etiquetar GCC en lugar de C ....... –