0
我试图调用将某些字符添加到缓冲区的函数,然后再删除它们。但我仍然没有正确地调用这个函数。我正在研究Linux。共享缓冲区进程
ERROR: q_add makes an integer without a cast.
这是部分代码:
do {
printf("Enter shared buffer operation ");
printf("i(init)/a(add)/r(remove)/t(items)/d(delete)");
scanf("%c%c", &op, &discard);
int a=1;
char n;
switch (op)
{
case 'i':
printf("Enter nnumber a leter here!");
scanf("%c" &n)
q_add(a, &n);
break;
case 'a':
q_delete();
break;
case 'r':
q_remove(a, &n);
break;
//------------------------------------------------------------------
在适当的文件中的q_add()
定义是:
void q_add(int n, char *x)
{
shbuf->count += n;
while (n-- > 0)
{
shbuf->buf[shbuf->inspos++] = *x++;
if (shbuf->inspos == QSIZ)
shbuf->inspos = 0;
}
}
而这个功能并未真正发挥作用;如果我取消了出口,我得到一个错误:
void q_delete()
{
if (-1 == shmctl(shmid, IPC_RMID, 0))
{
perror("Can't remove shared mem");
//exit(1);
}
}
我试过了,在执行并输入值 – 2010-08-18 08:24:20
之后,它返回了一个分段错误。您从不设置任何有效的值。这可能就是为什么它是残疾人。 – JeremyP 2010-08-18 08:44:41
看着你的代码,使用'q_add(1,&n);',因为你只有一个字符 – JeremyP 2010-08-18 08:46:30