我正在阅读ROS的代码。
在文件ros_comm/roscpp/include/ros/subscriber.h
中,我看到了这样一段代码:
operator void*() const { return (impl_ && impl_->isValid()) ? (void*)1 : (void*)0; }
好的,在C语言中,(void *)0
可以被视为NULL
,但是(void *)1
表示什么呢?
如果一个类Foo
包含这个函数,那么我们可以这样编码:
Foo foo;
void *ptr = foo;
对吗?这是不是意味着void *ptr = (void *)1
是可能的?这是什么意思?
void *
。至于为什么要这样做,或者这有什么实际用途,请不要问我。如果可以的话,请问原始程序员,或者这里可能有其他人可以阐明这个问题。 - user109574351
的内存单元中存储的内容。不过我们不确定,建议向运行该库的人询问。 - lost_in_the_sourcekinetic-devel
,然后你就会找到它。 - Yves