When the compiler parses that command, it's like to parse ++exf and recognise a pre-increment operation on exf.
That leaves a ++ remaining. The compiler will see that it has no left hand value and spit out that you're trying to use the post-increment operator on nothing.
When the compiler parses that command, it's like to parse ++exf and recognise a pre-increment operation on exf.
It is backward. Post-increment have higher precedence, but returns r-value, so preincrement will not work, because it requires l-value.
If you do test = (++exf)++;, it should work, and test should be equal to ext − 1.