Portál AbcLinuxu, 11. listopadu 2025 14:04
. 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?
struct opStack; /* operator call prototype */ typedef void (*opCall)(struct opStack* );
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.