ran*_*ght 4 c arrays struct warnings pointers
为了 struct
typedef struct sharedData
{
sem_t *forks;
}sharedData;
Run Code Online (Sandbox Code Playgroud)
当我尝试这样做时,我收到警告:
sharedData sd;
sem_t forks[5];
sd.forks = &forks; // Warning: assignment from incompatible pointer type
Run Code Online (Sandbox Code Playgroud)
我误解或遗漏了什么吗?
tem*_*def 11
问题是&forks有类型
sem_t (*)[5]
Run Code Online (Sandbox Code Playgroud)
也就是说,指向五个数组的指针sem_t.编译器警告是因为sd.forks有类型sem_t*,并且两个指针类型不能相互转换.
要解决此问题,只需将分配更改为
sd.forks = forks;
Run Code Online (Sandbox Code Playgroud)
由于C的指针/数组可互换性,此代码将按预期工作.这是因为forks将被视为&forks[0]具有类型的sem_t *.