이 작은 예제를 컴파일하려고 ...잘못된 변환
#include <iostream>
#include <stdio.h>
#include <unistd.h>
int main(void) {
FILE *foo;
foo = fopen("bar.txt", "rt");
lseek(foo, 5, SEEK_CUR); // This line is getting compiler error
fclose(foo);
return 0;
}
... 난 lseek()
에 대한 호출에 대한 컴파일러 오류가 발생합니다. 출력은 다음과 같습니다 공식적으로
main.cpp|8|error: invalid conversion from ‘FILE* {aka _IO_FILE*}’ to ‘int’ [-fpermissive]|
unistd.h|334|error: initializing argument 1 of ‘__off_t lseek(int, __off_t, int)’ [-fpermissive]|
: 나는 또한 사용하여 시도 모두 lseek(*foo, 5, SEEK_CUR);
및 lseek(&foo, 5, SEEK_CUR);
,하지만 그건 단지 상황을 악화 있습니다. (난 정말 그 어느 것도 해결하기 위해 기대하지 않았다.)
man-page for lseek(3) 참조 : 이 오프셋 off_t lseek의 off_t ( fildes을 int로
시놉시스
, 어디서를 int로);설명
다음, fildes 파일 디스크립터와 관련된 개방 파일 설명 파일 오프셋을 설정하여야한다 Lseek로부터() 함수 :[........] 나는이 해석
는 첫 번째 인수는이 경우 foo는 인 파일 기술자,해야한다는 것을 의미합니다.
Q : 여기에 무슨 문제가 있습니까?
원시 파일 처리와 표준 입출력 라이브러리를 혼합하지 마십시오. 버퍼가 복잡하고 물건이 더럽습니다. 하나 또는 다른 것을 사용하십시오. –