我需要动态加载 WinAPI 函数。因此我定义了一个新类型——指向函数的指针。
我应该在我的 typedef 中保留 _In_
、_Out_
之类的宏吗?
例如 WinAPI 函数:BOOL WINAPI CloseHandle(_In_ HANDLE hObject);
如何定义指向这个函数的指针?
typedef BOOL (WINAPI * CloseHandlePtr)(_In_ HANDLE hObject);
typedef BOOL (WINAPI * CloseHandlePtr)(HANDLE hObject);
最佳答案
这些宏是 Microsoft Source Annotation Language(SAL,请参阅 https://msdn.microsoft.com/en-us/library/hh916383.aspx)的一部分,旨在帮助作为人类读者和代码分析工具的注释。
你的 typedef 没有它们也能工作。由于函数指针 typedef 已经足够复杂,有人主张将它们排除在外。
另一方面,将它们排除在外可以防止例如通过查找代码中的错误进行 Visual Studio 代码分析。
关于c - 我应该在函数指针的 typedef 中保留 `_In_` 、 `_Out_` 之类的宏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35123022/