Ho il seguente struct costante che detiene i puntatori a funzione:Come rendere i puntatori di funzione in una costante di struttura da utilizzare per inizializzare un array costante?
/* 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
}
Fin qui tutto bene!
Ora voglio creare un array costante del struct sopra e assegnare i puntatori a funzione dalle istanze della struct:
/* module2.c */
#include <module1.h>
const my_struct_t arrayOfMyStruct[] = {
{ myStruct1.funcPtr1, myStruct1.funcPtr2 },
// ...
}
compilatore genera un errore e dice, che le espressioni "myStruct1.funcPtr1"
e "myStruct1.funcPtr2"
non erano costanti .
Cosa c'è che non va?
sei sicuro che è incluso. Per includere il file locale '#include" module1.h "'. –
Jeyaram
È sicuramente incluso. – momjovi89
Questo non è un problema relativo ai puntatori di funzione, ma un problema relativo all'inalizzazione delle variabili in generale. – alk