[fpc-pascal] PACKENUM and MINENUMSIZE

Lukas Gradl fpc at ssn.at
Thu Sep 11 11:03:26 CEST 2008


As far as i can understand the fpc sources it's in compiler/scanner.pas, 
line 359ff:

            { Default enum packing for delphi/tp7 }
            if (m_tp7 in current_settings.modeswitches) or
               (m_delphi in current_settings.modeswitches) then
              current_settings.packenum:=1
            else if (m_mac in current_settings.modeswitches) then
              { compatible with Metrowerks Pascal }
              current_settings.packenum:=2
            else
              current_settings.packenum:=4;

So it would be 1 fpr Delphi and TP7 mode, 2 for mac (don't know that) 
and 4 for all others.

Did a little test program on that. With {$mode objfpc} result is 4, with 
  {$mode delphi} result is 1. (And the most important for me: Its the 
solution to my problem with UIB - will post the reason as an answer to 
that posting!)

program Project1;

{$mode objfpc}
{$H+}

Uses SysUtils;

type
   TEnumTestType = (
     etOne,
     etTwo,
     etThree,
     etFour,
     etFive,
     etSix,
     etSeven,
     etEight,
     etNine,
     etTen,
     etEleven,
     etTwelve,
     etThirteen,
     etForteen
   );

var
   ET: TEnumTestType;

begin
   writeln(IntToStr(SizeOf(ET)));
end.

Regards
Lukas


Michael Van Canneyt schrieb:
> 
> On Thu, 11 Sep 2008, Marco van de Voort wrote:
> 
>> In our previous episode, Michael Van Canneyt said:
>>>> As far as I could find in the docs it depends on $MODE: for $MODE OBJPAS it's
>>>> 4 but I could'nt find the default for $MODE DELPHI.
>>> Where did you read that this depends on $MODE ?
>>> It just says that the default (contrary to Delphi) is 4.
>> Then the doc is wrong, since sizeof (enum with one element) is 1 in Delphi
>> mode.
> 
> No problem, if someone would tell me the exact behaviour, I will change it.
> 
> Michael.
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> 

-- 

--------------------------
software security networks
Lukas Gradl <fpc#ssn.at>
Eduard-Bodem-Gasse 9
A - 6020 Innsbruck
Tel: +43-512-214040-0
Fax: +43-512-214040-21
--------------------------



More information about the fpc-pascal mailing list