在我的标头api文件中有这个。 (不是我的代码)
typedef void (WINAPI *PIN_FUNC)(char*,LPVOID);
__PINLIB__ int WINAPI PIN_GetNumeric(int m_id,char * Message,PIN_FUNC func,LPVOID Param);
并且有一次我通过在我的代码中执行此操作
static void WINAPI Pinpad_Handle(char *buf, LPVOID pParam);
void WINAPI PinpadHelper::Pinpad_Handle( char *buf, LPVOID pParam){...}
但我明显感觉到我做错了。作为VC ++的新手,我不知道如何修复它。我在typedef上阅读的教程主要讨论变量和抽象等等(我理解它的一面)我认为我可以做到这一点
static PIN_FUNC PinpadEvent(char* buffer, LPVOID pParam);
但是在Visual Studio中引发错误。我该如何正确地做到这一点?或者我第一次没错了吗?
答案 0 :(得分:2)
你原来是这样做的。 PIN_FUNC只是一个C函数指针声明。您必须使用与函数指针完全相同的签名编写C函数。你做了什么,原始代码没有错。如果您尝试分配函数指针并且函数签名错误,编译器将生成错误。许多程序员犯了错误的错误,这是一个致命的错误,在运行时严重爆炸。所以永远不要那样做。
不太确定你在最后一个片段中尝试做了什么。如果要声明自己的存储函数指针的变量,则需要如下所示:
static PIN_FUNC PinpadEvent;
当然还需要分配。如果你仍然感到困惑,请查看你最喜欢的关于函数指针的C语言编程书。