什么是C ++中的_In_?

时间:2012-07-12 17:29:53

标签: c++ c microsoft-metro c++-cx

我已经搜索了很多,但没有得到任何有用的结果。

我目前正在尝试为Windows 8 Metro编写简单的DirextX游戏,而且遇到_In_相当多。我只是想知道它是什么。

另外,我已经看到很多使用^作为指针*,我发现它很奇怪。除此之外,一些类的接口为ref class MyClass,我认为这是C#易读性。

无论如何,任何帮助都会很棒。

4 个答案:

答案 0 :(得分:26)

它是SAL annotation,用于代码分析。注释本身被定义为宏,在正常构建中,它们扩展为空。

^ref classC++/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_)