나는 갈거야 K&R
. 나는 다음의 발췌문 인 stdio.h
과 혼동을 느낀다. 여기 FILE
표준 입력 및 표준 출력에 stdin, stdout 및 stderr 실제 assingment
typedef struct _iobuf {
int cnt; /* characters left */
char *ptr; /* next character position */
char *base; /* location of buffer */
int flag; /* mode of file access */
int fd; /* file descriptor */
} FILE;
extern FILE _iob[OPEN_MAX];
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
는 구조로 정의되고,
stdin
는
stdout
은
stderr
FILE
유형의 배열의 처음 세 개의 부재이다. 따라서
(&_iob[0])
,
(&_iob[1])
또는
(&_iob[2])
~
standard input device
및
standard output device
의 할당은 어디에 쓰여 집니까?
그래서'FILE'도 전에 다른 곳에서 선언했다고 말하고 있습니까? – noufal
@noufal 당신은 놀랐습니다. 예, 일반적으로 사용하기 위해 어딘가에 선언해야합니다. 'fopen()'호출에서 얻는 것은 라이브러리에 의해 어떤 수단에 의해 할당되고 관련 정보로 채워진'FILE'를 가리키는'FILE * '입니다. 그러나이 선언은 라이브러리에 의해 수행되어야하며 어플리케이션 프로그래머의 업무가 아닙니다. – glglgl