C ++函数参数中的返回参数

时间:2019-05-04 18:05:13

标签: c++

我试图理解typedef,但是我对以下代码感到困惑:

   typedef _Return_type_success_(return == DUPL_RETURN_SUCCESS) enum
   {
    DUPL_RETURN_SUCCESS             = 0,
    DUPL_RETURN_ERROR_EXPECTED      = 1,
    DUPL_RETURN_ERROR_UNEXPECTED    = 2
   }DUPL_RETURN;

我的问题是:

1)Return参数在函数的参数中做什么

2)我们通常像这样定义typedef

 typedef int foo;

我无法理解以上格式。

我不喜欢认真的c ++编程,谢谢您的时间。

编辑:我正在尝试构建此流应用程序,因此我需要尽可能快地检索帧,我偶然发现了几篇推荐DXGI方式的文章,这是一种快速的解决方案。我试图了解如何使用Windows桌面复制API。我在msdn官方网站here

上找到了此代码

1 个答案:

答案 0 :(得分:5)

Action<object, int, int>不是正式的c ++标准的一部分,而是the Microsoft source code annotation language(是c ++语法的专有补充)的一部分:

  

使用SAL注释减少C / C ++代码缺陷
  SAL是Microsoft源代码注释语言。通过使用源代码注释,您可以使代码背后的意图明确。这些注释还使自动化的静态分析工具能够更准确地分析代码,大大减少误报和误报。

Success/Failure Annotations

中描述了_Return_type_success_本身
  

_Return_type_success_:可以应用于_Return_type_success_(expr)。指示对所有返回该类型且未明确具有typedef的函数进行注释,就像它们具有_Success_一样。 _Success_(expr)不能用于函数或函数指针typedef。

_Return_type_success_无疑是仅一个定义为_Return_type_success_的宏,因此在编译时将其完全删除。至少在某些天蓝色代码中使用的sal.hno_sal2.h)标头就是这种情况。