0

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

4

1 回答 1

2

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

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

  static PIN_FUNC PinpadEvent;

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

于 2013-04-13T22:55:46.097 回答