我试图理解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
上找到了此代码答案 0 :(得分:5)
Action<object, int, int>
不是正式的c ++标准的一部分,而是the Microsoft source code annotation language(是c ++语法的专有补充)的一部分:
中描述了使用SAL注释减少C / C ++代码缺陷
SAL是Microsoft源代码注释语言。通过使用源代码注释,您可以使代码背后的意图明确。这些注释还使自动化的静态分析工具能够更准确地分析代码,大大减少误报和误报。
_Return_type_success_
本身
_Return_type_success_
:可以应用于_Return_type_success_(expr)
。指示对所有返回该类型且未明确具有typedef
的函数进行注释,就像它们具有_Success_
一样。_Success_(expr)
不能用于函数或函数指针typedef。
_Return_type_success_
无疑是仅一个定义为_Return_type_success_
的宏,因此在编译时将其完全删除。至少在某些天蓝色代码中使用的sal.h
(no_sal2.h
)标头就是这种情况。