[fpc-pascal] How to translate C macro
Santiago A.
svaa at ciberpiula.net
Tue Jan 3 16:27:43 CET 2017
El 02/01/2017 a las 21:57, Darius Blaszyk escribió:
> Hi all,
>
> Could someone suggest how to translate the following code to pascal?
>
> #define prev(X) ( *( (void **) ( ((void *) (X)) - 32 ) ) )
> .....
> prev(ptr) = prev(last);
>
> I tried converting the macro to an inline function but I get the error
> message: Error: Argument cannot be assigned to.
>
> The following does work but is a bit verbose. So therefore I would
> prefer a clean solution if possible. I never have used macro's in FPC,
> are they capable of doing the same as mentioned above?
>
> ( ppointer ( (pointer (ptr)) - 32 ) )^ := ( ppointer ( (pointer
> (last)) - 32 ) )^;
If I have understood right, it could be something like this,
dec(ptr,32);
dec(Last,32);
ptr^:=Last^;
but maybe I have missed some indirection.
You could show a little of code to see what do you intend to do. Change
the 32th backward element of an array of pointers?
--
Saludos
Santiago A.
More information about the fpc-pascal
mailing list