-1

我正在使用 mmeapi.h 库并查看了函数waveOutUnprepareHeader(),我想知道它的语法是如何工作的。

mmeapi.h

DECLARE_HANDLE(HWAVEIN);
DECLARE_HANDLE(HWAVEOUT);
FAR *LPWAVEHDR;

minwindef.h

typedef unsigned int        UINT;

mmeapi.h

waveOutUnprepareHeader(
    _In_ HWAVEOUT hwo,
    _Inout_updates_bytes_(cbwh) LPWAVEHDR pwh,
    _In_ UINT cbwh
    );
  1. 做什么_Inout_updates_bytes_(cbwh)
  2. 做什么DECLARE_HANDLE
4

1 回答 1

1

这些是Microsoft 特定的宏,它们是称为 SAL 的东西的一部分。

微软对这些宏的用途有这样的说法:

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

您会发现它们散布在 Microsoft 自己的头文件中,因此大概他们发现它们有助于检测编码错误。Visual Studio 有一个使用它们的代码分析工具,请参阅:

https://docs.microsoft.com/en-us/cpp/code-quality/code-analysis-for-c-cpp-overview

的目的在此处DECLARE_HANDLE描述。

于 2021-09-29T19:19:56.930 回答