我已经搜索了很多,但没有得到任何有用的结果。
我目前正在尝试为Windows 8 Metro编写简单的DirextX游戏,而且遇到_In_
相当多。我只是想知道它是什么。
另外,我已经看到很多使用^
作为指针*
,我发现它很奇怪。除此之外,一些类的接口为ref class MyClass
,我认为这是C#易读性。
无论如何,任何帮助都会很棒。
答案 0 :(得分:26)
它是SAL annotation,用于代码分析。注释本身被定义为宏,在正常构建中,它们扩展为空。
^
和ref class
是C++/CX的功能,这是一组语言扩展,旨在让您更轻松地在C ++中为Windows 8构建Metro风格的应用。它们都不是标准C ++的一部分。文档(先前已链接)包含指向描述语言扩展的教程和参考的链接。
答案 1 :(得分:0)
我认为(来自快速谷歌)_in_
表示参数是函数/方法的输入或输出(_out_
)。
^
是一个托管指针(垃圾收集指针,与C ++ / CLI相关)。
答案 2 :(得分:0)
_Out_
表示作为参考传递的参数。 _In_
意味着相反。 (_Out_ x)
和(&x)
相似。
答案 3 :(得分:0)
在 sal.h 文件中找到这个定义
// Input parameters --------------------------
// _In_ - Annotations for parameters where data is passed into the function, but not modified.
// _In_ by itself can be used with non-pointer types (although it is redundant).
// e.g. void SetPoint( _In_ const POINT* pPT );
#define _In_ _SAL2_Source_(_In_, (), _Pre1_impl_(__notnull_impl_notref) _Pre_valid_impl_ _Deref_pre1_impl_(__readaccess_impl_notref))
#define _In_opt_ _SAL2_Source_(_In_opt_, (), _Pre1_impl_(__maybenull_impl_notref) _Pre_valid_impl_ _Deref_pre_readonly_)