小编mom*_*i89的帖子

如何使结构常量中的函数指针用于初始化常量数组?

我有以下常量结构,它包含函数指针:

/* 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"没有恒定的.
怎么了?

c arrays struct initialization constants

5
推荐指数
1
解决办法
111
查看次数

标签 统计

arrays ×1

c ×1

constants ×1

initialization ×1

struct ×1