我有以下常量结构,它包含函数指针:
/* 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
}
Run Code Online (Sandbox Code Playgroud)
到现在为止还挺好!
现在我想创建一个上面结构的常量数组,并从结构的实例中分配函数指针:
/* module2.c */
#include <module1.h>
const my_struct_t arrayOfMyStruct[] = {
{ myStruct1.funcPtr1, myStruct1.funcPtr2 },
// ...
}
Run Code Online (Sandbox Code Playgroud)
编译器会引发错误,并表示,该表达式"myStruct1.funcPtr1"并"myStruct1.funcPtr2"没有恒定的.
怎么了?