[fpc-pascal] Error: Can't take the address of constant expressions
Jonas Maebe
jonas.maebe at elis.ugent.be
Wed Sep 26 10:29:59 CEST 2012
On 26 Sep 2012, at 07:58, Vincent Snijders wrote:
> 2012/9/25 Bernd <prof7bit at gmail.com>:
>> 2012/9/25 patspiper <patspiper at gmail.com>:
>>> procedure test;
>>> begin
>>> Move(MyClass1.Ref.Data^, MyClass2.Ref.Data^, 1);
>>> end;
>>
>> and if you cast it to some other pointer type before dereferencing the
>> error goes away:
>>
>> procedure test;
>> begin
>> Move(MyClass1.Ref.Data^, PByte(MyClass2.Ref.Data)^, 1);
>> end;
>>
>> But this should not be necessary.
>
> Why not? The error is correct. By using the type cast you tell the
> compiler you know what you are doing and that is should not bother
> doing the sanity check.
If that were true, then using a local variable that is an untyped pointer would also have to fail. It is in fact a compiler bug.
Jonas
More information about the fpc-pascal
mailing list