我如何使用这种类型的typedef?

时间:2013-04-13 21:02:26

标签: visual-c++ typedef

在我的标头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中引发错误。我该如何正确地做到这一点?或者我第一次没错了吗?

1 个答案:

答案 0 :(得分:2)

你原来是这样做的。 PIN_FUNC只是一个C函数指针声明。您必须使用与函数指针完全相同的签名编写C函数。你做了什么,原始代码没有错。如果您尝试分配函数指针并且函数签名错误,编译器将生成错误。许多程序员犯了错误的错误,这是一个致命的错误,在运行时严重爆炸。所以永远不要那样做。

不太确定你在最后一个片段中尝试做了什么。如果要声明自己的存储函数指针的变量,则需要如下所示:

  static PIN_FUNC PinpadEvent;

当然还需要分配。如果你仍然感到困惑,请查看你最喜欢的关于函数指针的C语言编程书。