[英]Checking typedef defined function pointer for null
从这个关于函数指针的优秀SO回答出发; 给定在C中定义的函数指针,例如:
typedef void (*Callback)(int argument);
Callback my_callback = 0;
如何检查回调函数指针是否已分配非空值?
my_callback == 0
或&my_callback == 0
吗?
您应该检查my_callback == 0
因为它是一个函数指针。
此外,您正在考虑的第二种选择:
&my_callback == 0
是地址 ,编译器甚至会警告您:
warning: the comparison will always evaluate as ‘false’ for the address of ‘my_callback’ will never be NULL [-Waddress]
if(&my_callback == 0)
^
请记住,变量的类型是函数指针 ,因此可以直接将其与NULL
或0
进行比较。
它可能取决于您的编码约定和样式首选项,但是我倾向于将指针用作布尔值本身:
if (my_callback) {
// Do the thing
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.