Initialize Static Array of Structs in C

Posted by russell_h on Stack Overflow See other posts from Stack Overflow or by russell_h
Published on 2010-04-14T22:20:02Z Indexed on 2010/04/14 22:23 UTC
Read the original article Hit count: 262

Filed under:
|
|
|

I 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 associated with it.

Given a struct like this (and I'm not certain I have the syntax right for the function pointer)

struct CARD {
    int value;
    int cost;
    // This is a pointer to a function that carries out actions unique
    // to this card
    int (*do_actions) (struct GAME_STATE *state, int choice1, int choice2);
};

I would like to initialize a static array of these, one for each card. I'm guessing this would look something like this

int do_card0(struct GAME_STATE *state, int choice1, int choice2)
{
    // Operate on state here
}

int do_card1(struct GAME_STATE *state, int choice1, int choice2)
{
    // Operate on state here
}

extern static struct cardDefinitions[] = {
    {0, 1, do_card0},
    {1, 3, do_card1}
};
  1. Will this work, and am I going about this the right way at all? I'm trying to avoid huge numbers of switch statements.

  2. Do I need to define the 'do_cardN' functions ahead of time, or is there some way to define them inline in the initialization of the struct (something like a lambda function in python)?

  3. I'll need read-only access to cardDefinitions from a different file - is 'extern static' correct for that?

I know this is a lot of questions rolled into one but I'm really a bit vague about how to go about this.

Thanks.

© Stack Overflow or respective owner

Related posts about c

    Related posts about struct