检查typedef定义的函数指针是否为null

ARF*_*ARF 1 c null pointers function-pointers

这个关于函数指针的优秀SO答案之后 ; 给定一个在C中定义的函数指针,如:

typedef void (*Callback)(int argument);
Callback my_callback = 0;
Run Code Online (Sandbox Code Playgroud)

如何检查回调函数指针是否已分配非空值?

my_callback == 0还是&my_callback == 0

gsa*_*ras 5

你应该检查,my_callback == 0因为它是一个函数指针.


而且,您正在考虑的第二个选项:

&my_callback == 0
Run Code Online (Sandbox Code Playgroud)

地址,你甚至会被编译器警告:

warning: the comparison will always evaluate as ‘false’ for the address of ‘my_callback’ will never be NULL [-Waddress]
  if(&my_callback == 0)
                  ^
Run Code Online (Sandbox Code Playgroud)

C中的NULL总是为零吗?