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: 317
        
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}
};
- Will this work, and am I going about this the right way at all? I'm trying to avoid huge numbers of switch statements. 
- 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)? 
- 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