我编写了一个单元测试程序,用于在初始编译之前捕获开源项目函数中的错误。我需要测试的所有函数都返回一个指向结构的指针(在本例中为bn_poly
),而我的变量不是指针。我知道必须有一个更简单的解决方案来解决这个问题,但经过一段谷歌搜索我什么也没想到,这就是我正在做的事情
/* only relevant part of code */
struct *bn_poly poly_summ;
unsigned i
poly_summ = (struct bn_poly*)bu_malloc(sizeof(struct bn_poly),"sum");
/* test multiplication and begin checking data */
*poly_summ = bn_poly_mul(&poly_summ,poly_eqn,poly_mul);
/* bn_poly returns a pointer to bn_poly, so i have to declare
* a temporary pointer to find the value. Is this the only way
* or is there a type cast method i am missing?
*/
我希望能做什么:
struct bn_poly poly_summ;
poly_summ = (somethingToConvertReturnVal)bn_poly_mul(&poly_summ,poly_eqn,poly_mul);
/* no memory allocation needed! */
答案 0 :(得分:1)
关于你的问题,我有点困惑但是这就是我对“投射”指针的了解。
&
符号是参考符号,因此&x
为您提供x的地址,或指向x的指针
*
符号是参考符号,因此假设x
是指针,*x
为您提供值x
指向
在你的情况下,我认为你想要
struct bn_poly poly_summ;
poly_summ = *(bn_poly_mul(/*params*/));
作为一个额外的注释,从它的外观来看,bn_poly_mul
看起来已经分配了你的结构并将它放在堆上。你甚至不需要分配它,事实上这样做会导致内存泄漏
另外,bn_poly_mul
的第一个参数是&poly_summ
的事实对我来说有点偏僻,所以我必须看到确定的功能