Trong Linux, container_of
vĩ mô được kèm theo trong ngoặc đơn dường như "thêm":Tại sao chúng ta cần dấu ngoặc đơn xung quanh macro khối?
#define container_of(ptr, type, member) ({ \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));})
Thay vì điều đó, chúng ta có thể chỉ cần sử dụng
#define container_of(ptr, type, member) { \
const typeof(((type *)0)->member) *__mptr = (ptr);
(type *)((char *)__mptr - offsetof(type,member));}
?
Các dấu ngoặc đơn có bắt buộc hay chỉ là để đề phòng?
này phải được ghi thẻ GCC chứ không phải C ....... –