5
A
回答
9
這些都是一些上了年紀的裝飾宏的從微軟的SAL註釋(the newer ones現在遵循不同的外殼,從資本)。這些對編譯沒有實際的影響(在VS 2010下它們甚至沒有擴展),它們用於內聯API文檔。
__in
:該參數是該函數的輸入(只讀,調用者初始化)。__out
:該參數包含函數返回時的輸出(只寫,調用者初始化)。__in_opt
:由_in
和_opt
,_opt
組成的複合註釋表明該參數是可選的並且可以設置爲默認值(通常爲NULL
)。
你可以在這裏得到老裝飾的完整解釋here。
+0
非常詳細非常感謝。我搜尋了很長時間,現在我終於在這裏找到了答案。 – Zcube 2012-03-23 06:10:38
3
正如Nercolis回答的那樣,這些是SAL註釋屬性。但是,這些不僅僅是內部或僅適用於API文檔。真正的目的是爲代碼分析。當您使用/analyze編譯器選項(項目屬性,代碼分析 - >常規)編譯項目時,這些在編碼問題中發揮重要作用。
例如,如果一個特定的指針參數說__in
那麼它不能傳遞一個空指針。該函數不會檢查null,並可能導致SEH。 __in_opt
參數可能爲空。當編譯器發現一些問題時,它會將其報告爲警告。見this article。
相關問題
- 1. __in __out __in_opt __allowed()的用途是什麼,它們是如何工作的?我應該在自己的代碼中使用類似的結構嗎?
- 2. 與__in查找Django的icontains
- 3. 如何使用CreateFile()API函數打開名爲.txt的文件?
- 4. django conjunctive filter __in查詢
- 5. 什麼是__in和WSAAPI?
- 6. 什麼是LogonUser()的令牌返回用於?
- 7. Django的 - __in數據庫查詢
- 8. __in過濾器不起作用
- 9. Django filter queryset __in for * every * item in list(2.0)
- 10. 從內核調用掛鉤崩潰NtQuerydirectoryFile內核
- 11. 如何讓另一個進程創建的進程使用創建進程的一部分內存?
- 12. 如何讓子進程使用與parrent相同的環境變量加上它自己的windows?
- 13. 包含文件的含義
- 14. Javascript - '...'的含義
- 15. 「for(;;)」的含義?
- 16. 'sp_renamedb'的含義
- 17. (* rhs.m_pData)的含義
- 18. SEQUENCE_NEXT_HI_VALUE的含義
- 19. $ {#variable [@]}的含義
- 20. 1000L的含義
- 21. 「EiC」的含義
- 22. CRUD的含義
- 23. 含義 '*' 的
- 24. RegEx的含義
- 25. doublerule的含義
- 26. @android的含義
- 27. PgaSocketWriteAllUnix的含義?
- 28. am_activity_launch_time的含義?
- 29. '+ ='的含義
- 30. 「.active?」的含義
那些不是關鍵字,那是微軟的SAL註釋 – Necrolis 2012-03-23 05:40:14
謝謝,這意味着它沒有實質性的影響?編譯器的編號爲 – Zcube 2012-03-23 05:49:00
,編碼器應該幫助他/她正確使用API。 – Necrolis 2012-03-23 05:54:13