gpt4 book ai didi

c - 使用指针和数组时关于不兼容指针类型赋值的警告?

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

对于结构

typedef struct sharedData
{
sem_t *forks;
}sharedData;

当我尝试这样做时收到警告:

sharedData sd;
sem_t forks[5];
sd.forks = &forks; // Warning: assignment from incompatible pointer type

我是不是误会了或遗漏了什么?

最佳答案

问题是 &forks 有类型

sem_t (*)[5]

也就是指向五个 sem_t 的数组的指针。编译器警告是因为 sd.forks 的类型为 sem_t*,并且这两种指针类型不能相互转换。

要解决这个问题,只需将分配更改为

sd.forks = forks;

由于 C 的指针/数组可互换性,此代码将按预期工作。这是因为 forks 将被视为 &forks[0],其类型为 sem_t *

关于c - 使用指针和数组时关于不兼容指针类型赋值的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895121/

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