函数指针的空检查不起作用
null check of function pointer doesn't work
我有密码
void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd->wndData)->updateCallback;
if (updateFunc)
updateFunc(wnd);
并且 if (updateFunc)
总是通过,即使 updateFunc
是 0xcdcdcd(在调试器中为空)。
出了什么问题,我该如何解决?
0xcdcdcd
不是null-pointer,它是一种用来标记未初始化内存的模式。该值在 C 中被视为 true
值。问题是 ((GlfwWindow*)wnd->wndData)->updateCallback
的值错误...
你是说
void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd )->wndData->updateCallback;
我有密码
void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd->wndData)->updateCallback;
if (updateFunc)
updateFunc(wnd);
并且 if (updateFunc)
总是通过,即使 updateFunc
是 0xcdcdcd(在调试器中为空)。
出了什么问题,我该如何解决?
0xcdcdcd
不是null-pointer,它是一种用来标记未初始化内存的模式。该值在 C 中被视为 true
值。问题是 ((GlfwWindow*)wnd->wndData)->updateCallback
的值错误...
你是说
void(*updateFunc)(EW_Window*) = ((GlfwWindow*)wnd )->wndData->updateCallback;