gpt4 book ai didi

c - 确定函数原型(prototype)

转载 作者:行者123 更新时间:2023-11-30 17:34:08 31 4
gpt4 key购买 nike

我有以下 2 个数据结构:

struct data_type{
char name[20];
int (*check_equal)(void* a, void* b);
}

struct attr_data{
int data_type;
void* (*get_func)(void* record); //Not sure about prototype of this function
}

第一个数据结构实际上是用于不同逻辑数据类型的结构,例如 string 和 int(short 和 int 的 c 数据类型属于“int”逻辑类型)。因此,我有一个 data_type 结构的数组,其中有 2 个元素:一个元素的名称为字符串,另一个元素的名称为整数。字符串的“check_equal”函数只是使用给定的参数 a 和 b 调用函数 strcmp(),这些参数被类型转换为 char*。 “整数”元素的 check_equal 函数的情况类似。但请注意,在此实现中,“check_equal”函数需要传递指向 2 个整数的指针。 第二个数据结构实际上是任何其他数据结构的元数据,例如:

struct abc{
char* a;
int b;
}

对于 struct abc 中的每个成员变量,假设我在某个数组中维护 struct attr_data 的实例。理想情况下,某个成员变量的 get 函数应该始终返回该成员变量的值,而不是指向该成员变量的指针。因此,struct abc 中成员 a 的 get 函数应该返回 char*,但 b 的 get 函数应该返回 int。现在我需要使用这些 get_funcs 直接将参数传递给 struct data_type 的 check_equal 函数。但由于 check_equal 函数的原型(prototype)是 (void*,void*),因此使用 get_func 会失败。谁能帮我决定这里使用的函数指针的原型(prototype)吗?有人可以帮助理解将 int 类型转换为 void* 背后的问题吗?

最佳答案

enum e{CHAR, INT, FLOAT, DOUBLE, CHARP, INTP, ......}

您可以使用这些数据类型作为引用,并使用 switch case 您可以对不同的数据类型执行所需的操作。

关于c - 确定函数原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23490658/

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