[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