PDA

View Full Version : Arrays or variables containing executable functions


Jones
2006.05.31, 12:23 AM
Is it possible to have an array or a struct that contains a void/int/float value that is a function? Like saying: This slot can be filled by the name of a function.

Here's what I mean:
(Let's say I have a function called "wootfunc").


typedef struct {
void *func();
} myStruct;

myStruct fooThingy;
fooThingy.func() = wootfunc();

// Now let's execute fooThingy's function:
fooThingy.func();



It's a bit crazy, but is it possible in some way shape or form?

OneSadCookie
2006.05.31, 12:43 AM
typedef struct {

void (*func)(void);

} myStruct;

myStruct fooThingy;
fooThingy.func = wootfunc;

// Now let's execute fooThingy's function:
fooThingy.func();

Zekaric
2006.05.31, 02:28 AM
If you are trying to save functions with different parameters to the same pointer then you will need to do some type casting back and forth to a proper function pointer variable before calling.

Jones
2006.06.01, 11:18 PM
I am actually making a menu structure system, the user simply declares a menu item, gives it a name and a result function, then when my auto-executing functions see it's been clicked, the function set by the user will be run.

Ingenious. ;)

Zekaric
2006.06.02, 12:35 PM
This is more commonly known as a callback sort of system. Very simple to understand and works fine for the most part. There are cases where this isn't as nice but I don't see you hitting that case with your set up; being programmatically generated menu system and not resource or external file based.