Ich habe folgende konstante Struktur, die Funktionszeiger hält:Wie mache ich Funktionszeiger in einer Strukturkonstante, um ein konstantes Array zu initialisieren?
/* 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
}
So weit, so gut!
Jetzt möchte ich eine konstante Anordnung der obigen Struktur schaffen und die Funktionszeiger von Instanzen der Struktur zuweisen:
/* module2.c */
#include <module1.h>
const my_struct_t arrayOfMyStruct[] = {
{ myStruct1.funcPtr1, myStruct1.funcPtr2 },
// ...
}
Compiler einen Fehler wirft und sagt, dass die Ausdrücke "myStruct1.funcPtr1"
und "myStruct1.funcPtr2"
nicht konstant waren .
Was ist los?
Sind Sie sicher ist enthalten. Zum Einbinden der lokalen Datei '#include" module1.h "'. –
Jeyaram
Es ist sicherlich enthalten. – momjovi89
Dies ist kein Problem im Zusammenhang mit Funktionszeigern, sondern ein Problem im Zusammenhang mit der Initialisierung von Variablen im Allgemeinen. – alk