[fpc-devel] FPC_HAS_CONSTREF
Jonas Maebe
jonas.maebe at elis.ugent.be
Fri Oct 22 21:18:02 CEST 2010
On 22 Oct 2010, at 21:35, Hans-Peter Diettrich wrote:
> Jonas Maebe schrieb:
>
>>> What's the guarantee, that (in detail external) subroutines will honor the "const" attribute?
>> None. "const" (and constref) is a hint from the programmer that the argument can be considered by the compiler as "constant" inside the called routine.
>
> What about reference counting or similar stuff, that differs for const and other arguments?
It's the same for const and constref.
>>> In how far does "constref" affect the *caller*, in contrast to e.g. "var"? Can constref pass properties, which are not allowed as var parameters?
>> Right now it's allowed (if the property uses a getter, the getter is called and its result is put into a temp location whose address is passed), but I think that's a bug in the implementation.
>
> When this feature is removed, does there remain any difference between var and constref, at the calling side?
At least you cannot pass a const parameter to a var parameter, while you can pass a const parameter to a constref parameter. Since it's always possible to take the address of a const parameter (unlike of a property), this is semantically consistent.
Jonas
More information about the fpc-devel
mailing list