일부 문자를 버퍼에 추가 한 다음 함수를 호출하려고합니다. 하지만 여전히 제대로 함수를 호출하지 못했습니다. 나는 리눅스에서 일하고있다.공유 버퍼 프로세스
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);
}
}
나는 이것을 시도하고 값을 입력하고 실행 한 후에 세분화 오류를 반환했습니다. –
a를 아무 것도 유효하게 설정하지 않았습니다. 아마 그게 segfaulting 인 이유 일 것입니다. – JeremyP
당신의 코드를 살펴보면 – JeremyP