gpt4 book ai didi

c - 如何将大量变量发送到泛型函数?

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:06 24 4
gpt4 key购买 nike

我有一个函数f,定义如下:

struct s {
void *data;
struct s *next;
};

void
f(struct s **p, void *q)
{
/* ... */
}

void *
g(struct s **p)
{
/* ... */
}

我必须使用很多不同的参数来测试这些功能。但是指向 void 的指针只能包含一个对象地址,对吗?那么如何在不使用临时变量(或可能在宏中)的情况下自动执行以下操作。

f(p, 2);
f(p, 'c');
f(p, 3.14);

最佳答案

没有办法绕过临时变量(好吧,你可以使用静态变量,它肯定不是临时的!)因为你需要一个地址,因此你需要一个(非注册)变量。

但是,这并不意味着您需要额外的代码行:您可以使用类型化初始化程序(从 C99 开始):

f(p, &(int){2});
f(p, &(double){3.14});

但是,函数(如您定义的那样)无法知道您刚刚传递给它的对象有多大,并且它一定不能只存储指针值,因为它是一个指针到一个非常的临时变量。

(整数可以转换为指针,但有一些限制,但您必须检查您的实现以获取详细信息。)

关于c - 如何将大量变量发送到泛型函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com