Portál AbcLinuxu, 11. května 2025 04:47
#include <stdio.h> /* fwd deklaracia */ struct point __point; /* exec fcia */ typedef int(*f_execute)(struct point* p); struct point { int x; int y; int z; f_execute exec; }; int exec_primary(struct point* p); int exec_secondary(struct point* p); int main() { struct point p; p.x = p.y = p.z = 0; p.exec = &exec_primary; /* execute */ while (p.exec != NULL) { p.exec(&p); printf ("DEBUG: p: [%d,%d,%d]\n", p.x, p.y, p.z); } return 0; } int exec_primary(struct point* p) { p->x += 4; p->y += 2; p->z += 1; p->exec = &exec_secondary; return 0; } int exec_secondary(struct point* p) { p->x *= 2; p->y *= 4; p->z *= 3; p->exec = NULL; return 0; }Nech mam struktutu point, ktora v sebe ma okrem suradnic aj pointer na fciu, ktoru ma vykonat. Na zaciatku je
exec
nastaveny na prvu, zakladnu exec fciu exec_primary
. Ta pocas svojho behu zmeni point exec
pointer na druhu fciu, exec_secondary
point __point;
, nemelo by tam byt jen struct point;
?
struct point;
__point
je uz zadef. premenna, co trosku mozno nema zmysel .. ja to (zne)uzivam na to, aby som videl, ze je to to fwd declaracia - bije mi to do oci hned ked otvorim zdrojak ..
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.