我正在尝试调用向缓冲区添加一些字符的函数,然后将其删除。但我仍然没有正确调用该功能。我在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);
}
}
答案 0 :(得分:4)
您正在将该功能称为:
int a;
char n;
....
q_add(a, n);
但def是:
void q_add(int n, char *x)
它希望char *
作为第二个参数,并且您要发送char
。
答案 1 :(得分:3)
q_add(1, &n);
?