函数指针的空检查不起作用

null check of function pointer doesn't work

我有密码

void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd->wndData)->updateCallback;
if (updateFunc)
    updateFunc(wnd);

并且 if (updateFunc) 总是通过,即使 updateFunc0xcdcdcd(在调试器中为空)。 出了什么问题,我该如何解决?

0xcdcdcd不是null-pointer,它是一种用来标记未初始化内存的模式。该值在 C 中被视为 true 值。问题是 ((GlfwWindow*)wnd->wndData)->updateCallback 的值错误...

你是说

void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd )->wndData->updateCallback;