Ik dacht slim te zijn en dezelfde functie te implementeren voor allerlei soorten functies die heel veel op elkaar lijken. Het idee is het volgende:
Ik pass een functie-pointer en het aantal bijbehorende argumenten aan mijn functie, die dan als het aan een bepaalde criteria voldoet, deze functie aanroept met de goede argumenten. Ik heb momenteel dit:
Maar dit wil maar niet werken, ik krijg foute gegevens door. Wat doe ik fout, of is de hele opzet fout?
Ik pass een functie-pointer en het aantal bijbehorende argumenten aan mijn functie, die dan als het aan een bepaalde criteria voldoet, deze functie aanroept met de goede argumenten. Ik heb momenteel dit:
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| // functie die aangeroepen zal worden: static void *EnsureNoVehicleProcZ(Vehicle *v, uint16 tile, byte z) /* VehicleFromPosProc is de definitie van de functietype, aangezien er meerdere soorten zijn, met minder/meer argumenten */ typedef void *VehicleFromPosProc(Vehicle *v, ...); // ik roep het aan via de volgende functie VehicleFromPos(tile, (VehicleFromPosProc*)EnsureNoVehicleProcZ, tile, z) // in VehicleFromPos doe ik dan het volgende: void *VehicleFromPos(uint16 tile, VehicleFromPosProc *proc, ...) { va_list ap; ... va_start(ap, proc); if ((a = proc(v, ap)) != NULL) return a; va_end(ap); ... } |
Maar dit wil maar niet werken, ik krijg foute gegevens door. Wat doe ik fout, of is de hele opzet fout?
[ Voor 4% gewijzigd door Darkvater op 09-07-2004 13:36 ]
Windows Vista? *NEVER* Het waarom - Opera forever!!!
I've seen chickens that were more menacing. Chickens in a coma. On ice. In my fridge