How to declare function pointer in header and c-file?

user1106072 picture user1106072 · Dec 19, 2011 · Viewed 29.1k times · Source

I'm a little confused over how to declare a function pointer in a header file. I want to use it in main and a file called menus.c and declare it in menus.h I assume. We want to initialize to point to a certain function.

it looks like this:

void (*current_menu)(int);

What do we write in menus.c, menus.h and main?

Answer

Drew Dormann picture Drew Dormann · Dec 19, 2011

A function pointer is still a pointer, meaning it's still a variable.

If you want a variable to be visible from several source files, the simplest solution is to declare it extern in a header, with the definition elsewhere.

In a header:

extern void (*current_menu)(int);

In one source file:

void (*current_menu)(int) = &the_func_i_want;