成员请求不是C中的结构或联合

时间:2013-09-17 01:46:13

标签: c unix

我有一个包含int变量的结构。

typedef struct _details_t{
 int id;
 int offset;
 int buff[4];
}details_t;

在主要的我已经将共享内存附加到结构类型如上的指针

int set_shm_data(details_t** details){
   if(NULL == details || *details == NULL){
           //error
   }
  *details->id = 345;
  return -1;
}

int main(){
 details_t* shmat;
  ....
  ....
 shmat = (details_t *)shmat(shmid,(void *)0,0);
 if(NULL == shmat){
  //error 
 }

 if(-1 == set_shm_data(&shmat)){
  //error
 }

 return 0;
}

我收到错误“对成员的请求不是结构或联合”。我检查了语法以及调用和访问方法。发现此错误似乎没有错。

1 个答案:

答案 0 :(得分:4)

问题在于:

*details->id = 345;

->运算符绑定比*更紧密,因此您需要使用括号:

(*details)->id = 345;