我正在处理一个使用位运算的函数,该函数与文件的长度有关:fpos_t flen;
当我尝试将其转换为int或char,或对其执行算术运算时,它会失败并出现以下编译错误:error: aggregate value used where an integer was expected
__pos
成员的含义与您或其他作者所认为的一致。 - Rob Kennedy当我尝试执行以下操作时,也遇到了同样的错误: char aux = (char)flen & 15,其中 flen 是 fpos_t 类型。 我在这里找到了解决方案:http://dsmarkchen.blogspot.com.br/2008/08/fpost.html。 应该改为: char aux = flen.__pos & 15。
听起来你想要使用当前文件位置作为整数进行操作。如果是这样的话,你可能会想要使用 ftell/fseek(或它们的 64 位版本),而不是 fgetpos/fsetpos。这两种方法都可以执行相似的操作,但是 ftell/fseek 使用整数值,而 fgetpos/fsetpos 使用一个有意抽象化的结构。
fpos_t
是一个结构体,不是一个数字,请参见这里。 - Seth Carnegiefgetpos()
获取值,并将该值与fsetpos()
一起使用,这就是全部内容; 其他所有内容都是无序的。(POSIX页面上回应了定义fpos_t
的C标准,指出:_fpos_t
:一个非数组类型,其中包含唯一指定文件中每个位置所需的所有信息_。) - Jonathan Lefflerstat()
或fstat()
。 - Jonathan Leffler