函数更改时 Void 指针值不会更改
Void pointer value doesn't change when changed in function
所以,我正在尝试测试我的 void* 值是否正确,但它一直说它是 NULL,尽管我知道它确实改变了我的功能。
测试代码:
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 的值,它不为空,但在测试中它仍然为空。我已经尝试了所有方法,但无法正常工作。
如果要更新指针参数,需要将其作为**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;
}
所以,我正在尝试测试我的 void* 值是否正确,但它一直说它是 NULL,尽管我知道它确实改变了我的功能。 测试代码:
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 的值,它不为空,但在测试中它仍然为空。我已经尝试了所有方法,但无法正常工作。
如果要更新指针参数,需要将其作为**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;
}