我有以下結構不變持有函數指針:如何使結構中的函數指針常量用於初始化常量數組?
/* 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
}
到目前爲止好!
現在我想從該結構的情況下創建上述結構的常量數組並分配函數指針:
/* module2.c */
#include <module1.h>
const my_struct_t arrayOfMyStruct[] = {
{ myStruct1.funcPtr1, myStruct1.funcPtr2 },
// ...
}
編譯器會引發錯誤,並表示,該表達式"myStruct1.funcPtr1"
和"myStruct1.funcPtr2"
不是常數。
有什麼不對?
是否確定已包含在內。包含本地文件'#include「module1.h」'。 –
Jeyaram
它肯定包括在內。 – momjovi89
這不是一個與函數指針有關的問題,而是一般與變量初始化有關的問題。 – alk