if((shmptr=shmat(shm_id,0,0))==(void *)-1)出现invalid conversion from 'void*'to'container_buffer*'

voidv(intsem_id,intsem_num){structsembufsem_buff;sem_buff.sem_num=sem_num;sem_buff.se... void v(int sem_id, int sem_num)
{
struct sembuf sem_buff;
sem_buff.sem_num = sem_num;
sem_buff.sem_op = 1;
sem_buff.sem_flg = 0;
semop(sem_id, &sem_buff, 1);
}

int main(int argc, char * argv[])
{
int shm_id, sem_id;
int num_p = 0, num_c = 0, i, j;
struct container_buffer * shmptr;
char pn;
time_t now;
pid_t pid_p, pid_c;
printf("Main process starts.\n");
sem_id = semget(SEM_ALL_KEY, 2, IPC_CREAT | 0660);
semctl(sem_id, SEM_EMPTY, SETVAL, BUFFER_NUM);
semctl(sem_id, SEM_FULL, SETVAL, 0);

if ((shm_id = shmget(IPC_PRIVATE, BUF_LENGTH, SHM_MODE)) < 0)
{

exit(1);
}
if ((shmptr = shmat(shm_id, 0, 0)) == (void *)-1)
{

exit(1);
}
shmptr->head = 0;
shmptr->tail = 0;
shmptr->is_empty = 1;
while ((num_p++) < PRODUCER)
{
if ((pid_p = fork()) < 0)
{
exit(1);
}
if (pid_p == 0)
{
if ((shmptr = shmat(shm_id, 0, 0)) == (void *)-1)
{
exit(1);
}
下略
展开
 我来答
永远的弈心
2013-11-14
知道答主
回答量:8
采纳率:0%
帮助的人:17万
展开全部
类型不匹配导致的 你可以改为: if((void*)(shmptr=shmat(shm_id,0,0))==(void *)-1)
强制类型转换一下就OK了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式