我应该在指向函数的指针的typedef中保留像`_In_`,`_Out_`这样的宏吗?

时间:2016-02-01 04:31:26

标签: c winapi typedef

我需要动态加载WinAPI函数。因此我定义了一个新类型 - 指向函数的指针。 我应该在我的typedef中保留_In__Out_这样的宏吗?

例如WinAPI函数:BOOL WINAPI CloseHandle(_In_ HANDLE hObject);

如何定义指向此函数的指针?

  • typedef BOOL (WINAPI * CloseHandlePtr)(_In_ HANDLE hObject);
  • typedef BOOL (WINAPI * CloseHandlePtr)(HANDLE hObject);

1 个答案:

答案 0 :(得分:2)

这些宏是Microsoft源注释语言(SAL,请参阅https://msdn.microsoft.com/en-us/library/hh916383.aspx)的一部分,旨在帮助作为人类读者和代码分析工具的注释。

你的typedef可以在没有它们的情况下工作。由于函数指针typedef已经足够复杂了,所以一个人认为要把它们排除在外。

另一方面,将它们排除可能会阻止例如通过查找代码中的错误进行Visual Studio代码分析。