Portál AbcLinuxu, 27. července 2025 13:08


Dotaz: C a cyklická definice typů

17.11.2005 22:06 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
C a cyklická definice typů
Přečteno: 125×
Odpovědět | Admin
Nějak jsem se zamotal do definic typů v C a nemůžu se z ní vymotat :-). Kód (zkrácený) je následující
/*  operator call prototype  */
typedef void (*opCall)(opStack* );

/*    operand struct    */
typedef struct op {
    ...
    union {
        ImageStruct*    image;
        int*            const;
        opCall          call;
    } value;
}op;

/*    operand stack   */
typedef struct opStack {
    ...
    rpcOperand*   ptop;
    rpcOperand*   stack;
}opStack;
Problém je celkem jednoznačný, prototyp funkce opCall musí být první, kvůli struktuře op. Jenže ty funkce budou přistupovat k zásobníku operandů opStack, který je definován až dole.

Napadlo mě změnit prototyp funkce na void (*opCall)(void* ) a přijít o typovou kontrolu. Eventálně zásobník nepředávat parametrem (stejně to bude globální proměnná). Ale ani jedno z řešení se mi moc nelíbí. Napadá vás, jak z toho ven?
When your hammer is C++, everything begins to look like a thumb.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.11.2005 22:08 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: C a cyklická definice typů
Odpovědět | | Sbalit | Link | Blokovat | Admin
struct opStack;

/*  operator call prototype  */
typedef void (*opCall)(struct opStack* );
17.11.2005 22:13 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
Rozbalit Rozbalit vše Re: C a cyklická definice typů
OK, díky.
When your hammer is C++, everything begins to look like a thumb.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.