1

我有一个单元测试程序,用于在初始编译之前捕获开源项目功能中的错误。我需要测试的所有函数都返回一个指向结构的指针(在这种情况下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! */
4

1 回答 1

1

我对你的问题有点困惑但这就是我对“铸造”指针的了解。

  • &符号是参考符号,因此 &x为您提供 x 的地址,或指向 x 的指针

  • *符号是尊重符号,所以假设x是一个指针,*x为您提供指向的x

在你的情况下,我想你想要

struct bn_poly poly_summ;
poly_summ = *(bn_poly_mul(/*params*/));

作为附加说明,从外观上看,它bn_poly_mul似乎已经分配了您的结构并将其放在堆上。你甚至不需要分配它,事实上这样做会导致内存泄漏


此外, is 的第一个参数对bn_poly_mul&poly_summ来说有点令人反感,所以我必须查看函数才能确定

于 2012-12-22T04:56:43.427 回答