我正在使用一个对文件的长度使用按位运算的函数:fpos_t flen;
当我尝试将其强制转换为int或char或尝试对其进行算术运算时,它将失败,并显示以下编译错误:error: aggregate value used where an integer was expected
最佳答案
您正在滥用该类型。首先,它不代表长度。它代表一个位置。其次,它仅用于调用fsetpos
。您并不是要对其进行算术运算,因为它不一定表示数字类型。它包含您的库能够执行fsetpos
操作所需的任何信息。在您的库的实现中,fpos_t
似乎是一个聚合类型,例如struct。 (您可以肯定地检查头文件中的定义,但不要依赖于那里发现的内容;它可能会在其他平台或标准库的 future 版本中有所不同。)
至于下一步,请考虑提出一个更直接的问题,即当您想到对fpos_t
进行按位运算时,如何解决正在处理的任何问题。