C 传递不同结构的函数参数
可以写一个函数吗C 传递不同结构的函数参数,c,function,struct,parameters,C,Function,Struct,Parameters,可以写一个函数吗 可以从同一参数接收不同类型的结构(可能是void*?),以及 检测功能中接收到的结构类型 也就是说,当我调用这个函数时,我向它发送一个特定的结构,当我再次调用它时,我发送一个不同类型的结构 这在C语言中是可能的吗 提前感谢。实现这一点的老式方法是使用一些包含枚举和空指针的通用结构,如: typedef enum { FOO_TYPE, BAR_TYPE } type_t; typedef struct { type_t type; void* data; }
void*
?),以及提前感谢。实现这一点的老式方法是使用一些包含枚举和空指针的通用结构,如:
typedef enum
{
FOO_TYPE,
BAR_TYPE
} type_t;
typedef struct {
type_t type;
void* data;
} foo_t
然后检查枚举类型
,并将数据指针强制转换为适当的类型
在现代标准C中,您也可以创建类型通用、类型安全的宏,如下所示:
void func_int (int x);
void func_float (float x);
#define func(x) _Generic((x), case int: func_int, case float: func_float) (x)
...
int i;
float f;
func(i);
func(f);
简短回答:不。长回答:有变通办法。