2013-04-30 36 views
15

Tôi đang xem cái nhìn đầu tiên của mình về API Windows và khi gặp phải WNDCLASSX Tôi không thể không tự hỏi tại sao thành viên của mình, cbSize, đã tồn tại. Mô tả của cbSize, theo MSDN là: Kích thước tính theo byte, của cấu trúc này. Đặt thành viên này thành sizeof (WNDCLASSEX). Hãy chắc chắn để thiết lập thành viên này trước khi gọi chức năng GetClassInfoEx. Điều này mô tả nó, và gợi ý vào mục đích của nó, nhưng tôi không undestand sự cần thiết.Tại sao cấu trúc có thể lưu trữ kích thước của riêng nó?

Câu hỏi của tôi là: Tại sao cấu trúc lại cần lưu trữ kích thước của riêng nó? Sẽ không có chức năng nào xử lý cấu trúc có quyền truy cập vào thông tin đó bằng cách sử dụng sizeof?

+0

Đoán của tôi: thuyết phục. Ngoài ra hiệu quả, nó là hiệu quả hơn nhiều để chạy sizeof (cái gì) một lần và lưu trữ nó, sau đó sử dụng nó hơn và hơn nữa, hơn là chạy sizeof hơn và hơn. –

+1

'do_something_with ((struct foo *) i_am_a_bar_ptr);' –

+0

Phiên bản hỗ trợ và nền tảng máy là hai lý do phổ biến. – WhozCraig

Trả lời

22

Phiên bản sau này của API Windows có thể thêm trường mới vào cấu trúc. Nếu cấu trúc có kích thước, thì mã cũ hơn có thể gọi hàm API, chỉ sao chép các trường mà mã cũ biết.

+7

Có lẽ WinAPI đã làm điều gì đó đúng lúc này. :) –

Các vấn đề liên quan