gpt4 book ai didi

c - 将两个不同的结构传递给同一个函数

转载 作者:太空狗 更新时间:2023-10-29 15:29:54 27 4
gpt4 key购买 nike

我有 2 个不同大小的结构,我希望有一个函数可以将它们传递给其中。但是,我不知道如何定义函数的参数来接受 2 个不同的结构。

我的结构在下面

struct {
int a; // 2 byte
int b; // 2 byte
int c; // 2 byte
int d; // 2 byte
} person1; // 8 bytes


struct {
int a; // 2 byte
DeviceAddress b; // 8 bytes
int c // 2 bytes
float d; // 4 bytes
} person2; // 16 bytes

function print_struct(struct& ?????)
{
actions here....
}


print_struct(person1);
print_struct(person2);

最佳答案

不幸的是,对于 C 中不相关的结构,唯一的选择是将指针传递给未类型化的结构(即作为 void*),并“在一边”传递类型,如下所示:

struct person1_t {
int a; // 2 byte
int b; // 2 byte
int c; // 2 byte
int d; // 2 byte
} person1;

struct person2_t {
int a; // 2 byte
DeviceAddress b; // 8 bytes
int c // 2 bytes
float d; // 4 bytes
} person2;

void print_struct(void* ptr, int structKind) {
switch (structKind) {
case 1:
struct person1 *p1 = (struct person1_t*)ptr;
// Print p1->a, p1->b, and so on
break;
case 2:
struct person2 *p2 = (struct person2_t*)ptr;
// Print p2->a, p2->b, and so on
break;
}
}

print_struct(&person1, 1);
print_struct(&person2, 2);

不过,这种方法很容易出错,因为编译器无法为您进行类型检查。

关于c - 将两个不同的结构传递给同一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14324182/

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