[fpc-pascal] Forward struct declaration in C

Sven Barth pascaldragon at googlemail.com
Fri Feb 22 12:11:29 CET 2013


On 22.02.2013 09:57, dhkblaszyk at zeelandnet.nl wrote:
> Hi,
>
> I'm porting a piece of software to FPC but I got stuck at a forward struct
> declaration. The situation is as folows.
>
> Header 1 declares:
>      struct TaskHandle__;
>      typedef void (*CallBackProcPtr)(struct TaskHandle__ *task);
>
> And Header2 provdes:
>      typedef struct TaskHandle__ { int unused; } *TaskHandle
>
> However header 2 already references header 1 because it already contains
> some other type definitions, so I cannot reference header 2 in header 1
> because of a circular dependency. Can FPC do something similar to C and
> define a forward record?

A: You could move the declaration of TaskHandle__ to a common unit which 
is used by the other two units.

B: As the TaskHandle__ type seems rather simple move it to the Header 1 
unit with a comment "was originally declared in Header 1" (because 
Header 2 already uses Header 1)

C: You could treat the "task" parmeter for the callback simply as a 
pointer... (of course you reduce static typing with this)

Regards,
Sven



More information about the fpc-pascal mailing list