[fpc-pascal] this line in pascal compile for i386 version but arm version
Jonas Maebe
jonas.maebe at elis.ugent.be
Wed Jun 13 11:41:55 CEST 2007
On 13 jun 2007, at 11:34, josepascual wrote:
> else Result :=Round(VarAsType(dataNum, varDouble))//varInteger)
> .
> .
> .
>
> compile okey in 2.1.1 and 2.1.4 fpc for i386 but 2.1.1 and 2.1.4
> ppccrossarm
>
>
> this is the error:
>
> ===
> .
> .
> (431,58) Error: Can't determine which overloaded function to call
> .
> .
> ===
> error is talking about Round.
That is because the overload priority for routines which accept a 64
bit integer (int64/qword, currency, and also comp on non-x86) and a
64 bit float(double) is the same when passing a variable variant
argument. Since we have round(comp), round(currency) and round
(double), the compiler cannot choose which one you want if you pass a
variant. The reason it compiles on i386, is that you also have a round
(extended) there, which has a higher priority than the 64 bit variants.
So you need to fix your code by adding an extra VarAsType(...,double)
call.
Jonas
More information about the fpc-pascal
mailing list