我需要动态加载WinAPI函数。因此我定义了一个新类型 - 指向函数的指针。
我应该在我的typedef中保留_In_
,_Out_
这样的宏吗?
例如WinAPI函数:BOOL WINAPI CloseHandle(_In_ HANDLE hObject);
如何定义指向此函数的指针?
typedef BOOL (WINAPI * CloseHandlePtr)(_In_ HANDLE hObject);
typedef BOOL (WINAPI * CloseHandlePtr)(HANDLE hObject);
答案 0 :(得分:2)
这些宏是Microsoft源注释语言(SAL,请参阅https://msdn.microsoft.com/en-us/library/hh916383.aspx)的一部分,旨在帮助作为人类读者和代码分析工具的注释。
你的typedef可以在没有它们的情况下工作。由于函数指针typedef已经足够复杂了,所以一个人认为要把它们排除在外。
另一方面,将它们排除可能会阻止例如通过查找代码中的错误进行Visual Studio代码分析。