2012-03-23 34 views
5

Ý nghĩa của các từ khóa này được sử dụng trước các biến trong một tham số chức năng là gì?Ý nghĩa của __in, __out, __in_opt

  • __in
  • __out
  • __in_opt
+1

những từ khóa không phải là từ khóa, đó là chú thích SAL của Microsoft – Necrolis

+0

cảm ơn, điều đó có nghĩa là nó không có tác dụng đáng kể? – Zcube

+0

đối với trình biên dịch không, đối với trình lập trình nó sẽ giúp anh ta/cô ấy sử dụng API một cách chính xác. – Necrolis

Trả lời

9

Đó là một số trong những trang trí vĩ mô cũ từ SAL Chú thích của Microsoft (the newer ones bây giờ làm theo vỏ khác nhau, bắt đầu với số vốn). Chúng không có ảnh hưởng thực sự đến việc biên dịch (dưới VS 2010 chúng thậm chí không được mở rộng), chúng có sẵn cho tài liệu API nội tuyến.

  1. __in: tham số này là đầu vào cho hàm (chỉ đọc, người gọi khởi tạo).
  2. __out: tham số này chứa đầu ra từ hàm khi hàm trả về (chỉ ghi, người gọi đã khởi tạo).
  3. __in_opt: chú thích ghép được tạo thành từ _in_opt, _opt cho biết thông số là tùy chọn và có thể được đặt thành giá trị mặc định (thường là NULL).

Bạn có thể xem giải thích đầy đủ ở đây về các đồ trang trí cũ hơn here.

+0

nó rất chi tiết cảm ơn rất nhiều. tôi đã tìm kiếm một thời gian dài bây giờ tôi cuối cùng đã tìm thấy câu trả lời ở đây. – Zcube

3

Được trả lời bởi Nercolis, đây là những thuộc tính chú thích SAL. Tuy nhiên, đây không chỉ là nội bộ hoặc chỉ cho tài liệu API. Mục đích thực sự là dành cho Phân tích mã. Khi bạn xây dựng dự án với tùy chọn biên dịch /analyze (Thuộc tính dự án, Phân tích mã -> Chung), các vai trò quan trọng này trong việc tìm kiếm các vấn đề về mã hóa.

Ví dụ: nếu đối số con trỏ cụ thể cho biết __in thì nó không được chuyển qua con trỏ rỗng. Hàm sẽ không kiểm tra null và có thể gây ra SEH. Đối số __in_opt có thể là null. Khi trình biên dịch tìm thấy một số vấn đề, nó báo cáo nó như là một cảnh báo. Xem this article.