CODESYS doesn't like the brackets around unary operators when they are not used within another expression.
So, while this works:
i = ++i; i := (i:=i+1);
This doesn't:
++i; (i:=i+1);
It's even worse for i++, as I was using a trick there to decrement the resulting value after the expression, which is sadly not possible.
Full example:
int i; int a() { i = ++i; i++; ++i; }
if i is a DINT you can use __XADD(ADR(i) , 1) for i++
Last edit: i-campbell 2020-07-06
Nice idea! Actually I already thought of inventing a runtime library
(emscripting is doing it similar). Then I could pass the variable by
reference, to increment it, and return the old value as a result.
But would this work with an Any-Type? Because in the place where I get the
operator I don't know the datatype. Not sure, yet.
BR,
Ingo