因此,我正在尝试测试我的void *值是否正确,尽管我知道函数的确发生了变化,但它一直说它为NULL。TestCode:
void test_mystack_push_and_pop(void)
{
void* obj;
mystack_pop(1, &obj);
TEST_ASSERT_EQUAL(12, (intptr_t)obj);
}
Mystack_pop:
int mystack_pop(int handle, void* obj)
{
pStackMeta_t tmpStackList = gStackList;
obj = tmpStackList->stack->obj;
tmpStackList->stack = tmpStackList->stack->next;
tmpStackList->numelem -= 1;
DBG_PRINTF("handle: %d, obj: %p\n", handle, obj);
return 0;
}
因此,如果我在mystack_pop中检查obj的值,则它不为null,但在测试中,它仍为null。我已经尝试了全部,但无法正常工作。
如果要更新指针参数,则需要将其作为**ptr
传递。通过编写**Ptr
来声明您的输出参数Ptr是指针上的指针。因此,在类型为指针的变量上的指针。试试:
int mystack_pop(int handle, void **obj)
{
pStackMeta_t tmpStackList = gStackList;
*obj = tmpStackList->stack->obj;
tmpStackList->stack = tmpStackList->stack->next;
tmpStackList->numelem -= 1;
DBG_PRINTF("handle: %d, obj: %p\n", handle, *obj);
return 0;
}