3 ms·
Have you ever used procedure Foo(constref Something: SomeType); instead of procedure Foo(var Something: SomeType); in Free Pascal? Both will pass the
by badsectoracula 6y ago
Have you ever used
procedure Foo(constref Something: SomeType);
instead of
procedure Foo(var Something: SomeType);
in Free Pascal? Both will pass the same stuff in memory (stack), but one has different semantics.
Similarly
const NiceFeature = $01; NeatFeature = $02; GoodFeature = $04;
var Features: Byte;
and
{$packset 1}
type Feature = (Nice, Neat, Good);
var Features: set of Feature;
would be stored the same way in memory but again, different semantics with the compiler helping you in the second case to avoid logic bugs (e.g. setting Features to an invalid value).
These are cases where Free Pascal helps you from shooting yourself in the foot.
- mikewarot 6y agoI've never used ConstRef, nor $packset I can see the value of making sure you don't end up with invalid values.