将fpos_t转换为int或char类型

Cast fpos_t to int or char

本文关键字:int char 类型 转换 fpos      更新时间:2023-10-16

我正在使用一个函数,该函数使用文件长度的按位操作:fpos_t flen;

当我尝试将其转换为int或char类型,或尝试对其进行算术运算时,它会失败,并产生以下编译错误:error: aggregate value used where an integer was expected

你误用了这个类型。首先,它不表示长度。它表示位置。其次,它只意味着在调用fsetpos时使用。你不需要对它进行算术运算因为它不一定代表数字类型。它包含库执行fsetpos操作所需的任何信息。在库的实现中,fpos_t似乎是一个聚合类型,例如结构体。(你可以检查头文件中的定义来确定,但不要依赖你在那里发现的任何东西;它可能在其他平台或标准库的未来版本中有所不同。

对于你的下一步,考虑问一个更直接的问题,当你想到在fpos_t上进行按位操作时,如何解决你正在处理的任何问题。

当我试图这样做时,我得到了同样的错误:Char = (Char)flen &15,其中flen是fpost_t。我找到了一个解决方案:http://dsmarkchen.blogspot.com.br/2008/08/fpost.html。应该是:Char = flen。__pos,15 .

听起来您想要使用当前文件位置作为整数。如果是这样,您可能希望使用ftell/fseek(或它们的64位同胞),而不是fgetpos/fsetpos。两者都提供类似的操作,但ftell/fseek使用整数值,而fgetpos/fsetpos使用故意抽象的结构。