この小さな例をコンパイルしようとすると...
#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);
ましたが、それは事態を悪化させるだけです。(私は本当にそれが何かを解決するとは思っていませんでした。)
概要
off_t lseek(int fildes , off_t offset , int whence );説明lseek() 関数は、次のように
、ファイル記述子fildesに関連付けられたオープン ファイル記述のファイル オフセットを設定します。[…………]
これは、最初の引数がファイル記述子(この場合はfoo ) であることを意味すると解釈します。
Q: ここで何が問題なのですか?