gpt4 book ai didi

c - 将结构传递给 C 中的泛型函数

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:03 26 4
gpt4 key购买 nike

我声明了一个名为“Struct”的新结构我有一个接受参数“void *data”的通用函数。

void Foo(void *data)

我将“Struct”的实例传递给通用函数。

Struct s;
Foo(&s);

我想在函数中访问结构的属性之一。

void Foo(void *data) {
char *word = (char*) data.word;
}

这是不允许的,因为它不能将数据识别为有效结构。

我什至尝试先将数据声明为结构类型,但出现错误。

void Foo(void *data) {
Struct s = (Struct) data;
char *word = s.word;
}

我收到“请求转换为非标量类型”。

最佳答案

首先,您应该打开编译器的警告标志(所有这些)。然后你应该传递一个指针到你的 Struct 并使用 struct 以外的东西作为变量名:

Struct s;
Foo(&s);

然后,在 Foo 中:

void Foo(void *data) {
Struct *s = data;
char *word = s->word;
}

您不能像您尝试的那样将非指针类型与 void* 相互转换,将指针类型与 void* 相互转换是在另一方面,有效。

关于c - 将结构传递给 C 中的泛型函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5696301/

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