[fpc-pascal] when will the size of an enumerated type change?

Michael Van Canneyt michael at freepascal.org
Wed Jan 9 16:49:08 CET 2019



On Wed, 9 Jan 2019, Dennis wrote:

> Type
>    TComparisonMode = (cmThisOnly, cmThisAndThat, cmThisOrThat);
>
>
> TMyClass = class
> public
> var
>    ComparisonMode : TComparisonMode;
> end;
>
>
> I discovered that, the sizeof(ComparisonMode) seem to be different 
> depending on whether the type TComparisonMode is defined in the same 
> unit file or in another unit file.
>
> Is that possible?

If the units are compiled using different settings, yes.

>
> I cannot create a simple test file to test it because the problem only  
> appears in my big project.
>
> Does FPC always produce a 4 byte variable for an enumerated types?

No, it depends on the $mode directive and the settings of the packenum directive.

Michael.


More information about the fpc-pascal mailing list