my_functions.hПочему я не могу инициализировать мой массив структур, содержащих указатели на функции в C?
void * f1 (int * param);
void * f2 (int * param);
void * f3 (int * param);
void b1(int * param);
void b2(int * param);
void b3(int * param);
my_prog.c
#include <my_functions.h>
// Typedef my function pointers
typedef void * (*foo)(int*);
typedef void (*bar)(int*);
// Declare the structure that will contain function pointers
typedef struct _my_struct
{
int tag;
foo f;
bar b;
}my_struct;
// Declare and initialize the array of my_struct
my_struct array[] =
{
{1, f1, b1},
{2, f2, b2},
{3, f3, b3}
};
Компилятор говорит:
предупреждение: инициализации от типа несовместим указателя
Я посмотрел на:
- Function Pointers within structures in C
- Initializing a function pointer in C
- How to initialize array of pointers to functions?
Но я до сих пор не могу понять, что я пропустил ...
Для меня, всех типов и функции известны, когда я пытаюсь инициализировать свой массив.
Невозможно выполнить инициализацию вне функции?
[EDIT] Я нахожусь в Linux, используя встроенную версию для консоли GCC 4.9.
Ваш код работает для меня. – 2501
Для меня тоже. На какой строке вы получаете ошибку? Какой компилятор/платформа/ОС вы используете? –
Я просматриваю свой код, поскольку я упростил его в своем сообщении ... Возможно, я что-то пропустил. Я получаю предупреждение на всех закрывающих скобках '{x, fx, bx}' – Coconop