[fpc-pascal] Re: type definitions etc

Jeff Pohlmeyer yetanothergeek at gmail.com
Sun May 29 07:49:13 CEST 2005


> > OK, I didn't try that, so it is allowed to define a type
> > as a pointer to a type that is defined later.

> Yes, but _only_ if the type declaration comes _immediately_ after
> the pointer type declaration. So you can't just declare a bunch 
> of pointer types and defer the actual type-declaration to a later 
> point, that won't work.

To clarify, you can actually have many additional types between
the pointer type and the record definition, as long as you
don't introduce another section keyword that "turns off"
the current "type" section. 

For instance, this will work:

  type

    pMyRec = ^tMyRec; // forward declaration

    MyInt = integer;
    MyArray = array[0..255] of char;

    { Hundreds more typedef's could go here }

    tMyRec = Record // actual definition
      data:pointer;
      next:pMyRec;
    end;


But the next example will NOT work, because the 
additional "type" keyword separates the two types:

  type  pMyRec = ^tMyRec;
  type  tMyRec = Record
      data:pointer;
      next:pMyRec;
    end;




More information about the fpc-pascal mailing list