1

I have following code:

typedef int (*t_Function) (int x);
t_Function Functions[MAX_FUNCTIONS];
int f(int x)
{
    return 0;
}

But I cannot initialize it properly. If I add following line:

Functions[0] = f;

then compiler generates following error:

prog.c:217: warning: data definition has no type or storage class
prog.c:217: error: conflicting types for Functions

How to initialize this array of pointers to functions?

1 Answer 1

4

You should either do it inside a function, where Functions[0] = f; works fine, or with an array initializer:

t_Function Functions[MAX_FUNCTIONS] = {f};

For this to work, f (and all functions you want in Functions) must have been declared at the point where this definition appears. Note that all other MAX_FUNCTIONS-1 elements of Functions will be NULL automatically if at least one of them is filled this way.

Sign up to request clarification or add additional context in comments.

1 Comment

Your statement is basically wrong, you cannot know, how undefined memory is filled. Unless you specify it in linker script as ZI.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.