C 如何向泛型函数发送大量变量?
我有一个函数C 如何向泛型函数发送大量变量?,c,unit-testing,void-pointers,C,Unit Testing,Void Pointers,我有一个函数f,定义如下: struct s { void *data; struct s *next; }; void f(struct s **p, void *q) { /* ... */ } void * g(struct s **p) { /* ... */ } 我必须测试这些函数,使用很多不同的参数。但是指向void的指针只能包含一个对象地址,对吗?那么,我如何在不使用临时变量(或者在宏中)的情况下,自动执行以下操作呢 临时变量是无法绕过的(好吧
f
,定义如下:
struct s {
void *data;
struct s *next;
};
void
f(struct s **p, void *q)
{
/* ... */
}
void *
g(struct s **p)
{
/* ... */
}
我必须测试这些函数,使用很多不同的参数。但是指向void
的指针只能包含一个对象地址,对吗?那么,我如何在不使用临时变量(或者在宏中)的情况下,自动执行以下操作呢
临时变量是无法绕过的(好吧,你可以使用静态变量,它肯定不是临时的!),因为你需要一个地址,所以你需要一个(非寄存器)变量 但是,这并不意味着您需要额外的代码行:您可以使用类型化初始值设定项(从C99开始): 但是,函数(正如您所定义的)无法知道刚刚传递给它的对象有多大,它不能只存储指针值,因为它是指向非常临时变量的指针
(整数可以转换为指针,然后再转换回来,但有一些限制,但您必须检查您的实现以了解详细信息。)临时变量是无法绕过的(您可以使用静态变量,它肯定不是临时的!),因为您需要一个地址,因此您需要一个(非寄存器)变量 但是,这并不意味着您需要额外的代码行:您可以使用类型化初始值设定项(从C99开始): 但是,函数(正如您所定义的)无法知道刚刚传递给它的对象有多大,它不能只存储指针值,因为它是指向非常临时变量的指针
(整数可以转换为指针,然后再转换回来,但有一些限制,但您必须检查您的实现以了解详细信息。)您可以查看这个线程示例,它以类似的方式接受参数:
_beginthread( Bounce, 0, (void *) (structure_of_whatever_variables) );
^
|
|
This is the parameter of function Bounce
您可以看看这个线程示例,它以类似的方式接受参数:
_beginthread( Bounce, 0, (void *) (structure_of_whatever_variables) );
^
|
|
This is the parameter of function Bounce
创建一个测试变量数组,并创建一个for循环来逐个调用它。这样,您就可以直接发送地址,或许类似的方式也可以:
for (int i = 0; i < NumOfTestCases; i++)
{
f(p, &pArrOfTestCases[i]);
}
for(int i=0;i
我希望这会有所帮助。创建一个测试变量数组,并创建一个for循环来逐个调用它。这样,您就可以直接发送地址,或许类似的方式也可以:
for (int i = 0; i < NumOfTestCases; i++)
{
f(p, &pArrOfTestCases[i]);
}
for(int i=0;i
我希望这会有帮助。这是一种标准方式吗?如果存在,
inptr\t
类型为什么存在?可能是关于命名问题,以便更容易理解。这是一种标准方式吗?如果存在,inptr\t
类型为什么存在?可能是关于命名问题,以便更容易理解这是一个解决方案,但我不能在数组中使用不同类型的变量,不是吗?无论如何,谢谢。这是一个解决方案,但我不能在数组中使用不同类型的变量,不是吗?无论如何谢谢。谢谢,我想我会用这个解决方案。谢谢,我想我会用这个解决方案。