Mam następujący struct, która utrzymuje stałą wskaźników funkcji:Jak utworzyć wskaźniki funkcji w stałej struktury do użycia w celu zainicjowania stałej tablicy?
/* module1.h */
typedef struct my_struct my_struct_t;
struct my_struct
{
void (*funcPtr1)(void);
void (*funcPtr2)(void);
}
extern const my_struct_t myStruct1;
/* module1.c */
#include <module1.h>
static void func1(void)
{
// do something
}
static void func2(void)
{
// do something else
}
const my_struct_t myStruct1 = {
.funcPtr1 = &func1,
.funcPtr2 = &func2
}
tej pory tak dobrze!
Teraz chcę utworzyć stałą tablicę powyższej struktury i przypisanie wskaźników funkcji z wystąpień struct:
/* module2.c */
#include <module1.h>
const my_struct_t arrayOfMyStruct[] = {
{ myStruct1.funcPtr1, myStruct1.funcPtr2 },
// ...
}
kompilator wygeneruje błąd i mówi, że wyrażenia "myStruct1.funcPtr1"
i "myStruct1.funcPtr2"
nie były stałe .
Co jest nie tak?
Czy na pewno dołączono? Do włączenia lokalnego pliku '#include" moduł1.h "'. –
Jeyaram
Jest na pewno dołączony. – momjovi89
To nie jest kwestia związana z wskaźnikami funkcyjnymi, ale kwestia związana z zainicjowaniem zmiennych w ogóle. – alk