Tôi đọc Essential COM và gặp macro 'BASE_OFFSET' từ chương 2 của cuốn sách và tôi không thực sự hiểu cú pháp của nó hoặc tại sao nó được thực hiện theo cách đó.BASE_OFFSET macro từ Essential COM
#define BASE_OFFSET(ClassName, BaseName) \
(DWORD_PTR(static_cast<BaseName*>(reinterpret_cast<ClassName*>(0x10000000))) - 0x10000000)
Bất cứ ai có thể giải thích về macro này và cách chúng tôi sử dụng? Trong thực tế, cuốn sách sử dụng vĩ mô này nhưng vì tôi không thực sự hiểu nó, tôi không thấy việc sử dụng thực tế của nó. Cảm ơn bạn rất nhiều trước.
Cảm ơn bạn đã chỉnh sửa câu hỏi của mình. – istudy0
Bằng cách một macro cửa sổ chuẩn khác [FIELD_OFFSET] (http://msdn.microsoft.com/en-us/library/windows/hardware/ff545727 (v = vs.85) .aspx) giúp bạn bù đắp trường được đặt tên của cấu trúc. – Oleg
cảm ơn nhận xét của bạn. – istudy0