5
Sự khác biệt giữa các chú thích SAL sau đây là gì?sự khác nhau giữa __deref_out_opt và __deref_opt_out là gì?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
Sự khác biệt giữa các chú thích SAL sau đây là gì?sự khác nhau giữa __deref_out_opt và __deref_opt_out là gì?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
Tham số PSTR*
có nghĩa là người gọi đi vào bộ đệm nhận con trỏ đến chuỗi.
Trong __deref_out_opt, chuỗi là tùy chọn (hàm đặt NULL trong bộ đệm do người gọi cung cấp).
Trong __deref_opt_out, bộ đệm là tùy chọn (người gọi qua NULL để biểu thị không quan tâm đến giá trị đầu ra).
Có lẽ, có thể kết hợp các khái niệm này, cần có một công cụ sửa đổi __deref_opt_out_opt
cho điều đó.
Tôi đặt _opt cho "trường hợp khác" ở đâu mà chức năng có thể đặt thông số đầu ra thành NULL? – John
Sau 'out', như trong' __deref_out_opt'. Tài liệu SAL mô tả trường hợp '__deref_opt' đặc biệt, và trong trường hợp đó bộ đệm có thể không tồn tại. Bạn muốn bộ đệm tồn tại, do đó đồng bằng '__deref', nhưng con trỏ được lưu trữ trong nó có thể là NULL, do đó' _out_opt'. –