繁体   English   中英

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

[英]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)
                  ^

在C中,NULL是否始终为零?

请记住,变量的类型是函数指针 ,因此可以直接将其与NULL0进行比较。

它可能取决于您的编码约定和样式首选项,但是我倾向于将指针用作布尔值本身:

if (my_callback) {
    // Do the thing
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM