gpt4 book ai didi

c - 访问传递给函数的结构成员变量

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

我在自己定义的结构中有一个名为 s 的结构统计变量:

struct myStruct {
struct stat s;
};

我想找出两个 myStruct 对象之间的 st_mode 之间的区别,所以我的逻辑是指向该结构并使用“.”。为其成员变量。

int func(const void *a, const void *b)
{
return a->s.st_mode - b->s.st_mode;
}

但是,此实现存在问题:

error: request for member 's' in something not a structure or union
warning: dereferencing 'void *' pointer [enabled by default]

我该怎么做才能纠正这个问题?

最佳答案

您的函数的参数是 const void* 类型,而不是 struct myStruct* 类型。

您确定它们实际上是指向 struct myStruct 的指针吗?如果是这样,你可以做一个 Actor :

return ((struct myStruct*)a)->s.st_mode - ((struct myStruct*)b)->s.st_mode

但是重新定义您的函数以仅接受正确类型的指针会更安全:

int func(const struct myStruct* a, const struct myStruct* b)

其余的保持不变。

关于c - 访问传递给函数的结构成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261532/

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