fread()함수에서 매개변수 buffer의 타잎을 (void *) 시켜주는 이유를 모르겠습니다.

조회수 38회

C에 대해서 공부 중에 fread( ) 분석하는 글을 봤습니다 ( https://youngsouk-hack.tistory.com/66 )

_IO_fread()함수를 뜯어보면 이런 소스코드를 볼 수 있습니다.


# define CHECK_FILE(FILE, RET) do { } while (0)

# define _IO_release_lock(_fp) ; } while (0)
size_t
_IO_fread (void *buf, size_t size, size_t count, FILE *fp)
{
  size_t bytes_requested = size * count; // 읽으려고 요처한 바이트 수 계산
  size_t bytes_read;
  CHECK_FILE (fp, 0);
  if (bytes_requested == 0) // 읽을게 없으면 종료
    return 0;
  _IO_acquire_lock (fp); // 의미 없는 매크로 함수
  bytes_read = _IO_sgetn (fp, (char *) buf, bytes_requested); 
  _IO_release_lock (fp); // 의미 없는 매크로 함수
  return bytes_requested == bytes_read ? count : bytes_read / size;
}
libc_hidden_def (_IO_fread)

보다보니

애초에 매개변수 buf의 타잎을 (void*)로 받는 이유가 이후에 _IO_sgetn()함수에서 size*count(== bytes_requested)만큼을 (char *)buf에 읽기 위해서였나...

라는 생각이 들더군요.

제 생각이 맞을까요??

확신이 안 들어서 질문드려봅니다!

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.