I\'m implementing a card game in C. There are lots of types of cards and each has a bunch of information, including some actions that will need to be individually scripted assoc
Your approach is exactly right.
switch
statements.extern
is what you want, not static
. Change your body to be this:
struct CARD cardDefinitions[] = {
{0, 1, do_card0},
{1, 3, do_card1}
};
then in an appropriate header file:
extern struct CARD cardDefinitions[];
Your approach is right and will work. Your function pointer syntax is right, except that you don't use parameter names - just types:
int (*do_actions)(struct GAME_STATE *, int, int);
That should work fine. It seems like you'd have a lot of functions if you're doing one per card, but maybe this particular game requires that level of control
You can't define them inline, but you can just do a forward declaration. You need to do &func_name
in the struct initialization though
No; extern
means a variable is declared in another file, so it doesn't make sense to have an extern variable that you're declaring at that location. Also, static
means the variable is only accessible from the current file, which is the opposite of what you want. Making it read-only would require a getter function, but if you just want to make it accessible from another file declare it normally here (struct cardDefinitions[] = {...}
) and in the other file use an extern (extern struct cardDefinitions[];
)