I'm working with a function that uses bitwise operations with the length of a file: fpos_t flen;
When I try casting it to an int or char, or attempt on arithmetic operation on it, it fails with the following compilation error:
error: aggregate value used where an integer was expected
You're misusing that type. First, it doesn't represent a length. It represents a position. Second, it's only meant to use in a call to fsetpos
. You're not meant to do arithmetic on it because it doesn't necessarily represent a numeric type. It contains whatever information your library needs to be able to perform an fsetpos
operation. In your library's implementation, fpos_t
appears to be an aggregate type, such as a struct. (You can check the definition in the header files to be sure, but don't rely on whatever you discover there; it's liable to differ on other platforms or in future versions of your standard library.)
As for your next step, consider asking a more direct question about how to solve whatever problem you were working on when you came up with the idea to do bitwise operations on a fpos_t
.
I was getting the same error when i was trying to do this: char aux = (char)flen & 15, where flen was fpos_t. I found a solution here: http://dsmarkchen.blogspot.com.br/2008/08/fpost.html . It should be: char aux = flen.__pos & 15.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With