In Linux, container_of
macro è racchiuso in parentesi apparentemente "extra":Perché abbiamo bisogno di parentesi attorno alla macro di blocco?
#define container_of(ptr, type, member) ({ \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));})
Invece di esso, possiamo semplicemente usare
#define container_of(ptr, type, member) { \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));}
?
Le parentesi sono obbligatorie o sono solo per precauzione?
Questo dovrebbe essere etichettato GCC piuttosto che C ....... –