抱歉,这一定是一个非常简单的问题,但是由于我尝试了不同的方式而没有任何成功,所以我必须在这里询问以确定。C编程:
有一个结构名称rtg
。编辑: mtch 的类型是 LLIST 初始类型是 LL_NODE obj 的类型是指针(void)
. 检查时使用 gdb
(gdb) print *rtg->mtch->initial->obj
Attempt to dereference a generic pointer.
(gdb) print rtg->mtch->initial->obj
$10 = (void *) 0x4cc660
(gdb) x 0x4cc660
0x4cc660: 0x00000000
这个空指针会导致我的程序出现段错误。我正在寻找的只是如何检查 rtg->mtch->initial->obj 指向的值不为零?(以防止上述段错误)我的意思是如果我检查
if (rtg->mtch->initial->obj)
,它只会检查指针 obj ,地址是否不为零(这不是我想要的,我打算检查该指针的值不为零(但是当我使用*在检查gdb之前它说“尝试取消引用通用指针”。那么检查该值不为零(并防止此段错误)的正确方法是什么?
编辑:我试过这个
if (*((char *) rtg->mtch->initial->obj) != NULL)
但我得到了编译警告:
警告:指针和整数之间的比较
EDIT2,这里在源代码中定义了什么
ECM_REQUEST 是结构 ECM_REQUEST rtg;在这个结构中,将 mtch 定义为 LLIST mtch;
初始是 LL_NODE
obj 是一个指针,我想检查 obj 值不为零
所以现在一切都清楚了我的问题不是吗?
谢谢