【发布时间】:2018-08-24 03:19:00
【问题描述】:
在下面的代码中,我试图将函数指针分配给函数指针数组。我收到错误消息
错误:初始值设定项元素不是常量,然后一个注释说“stateTable2[1]”的初始化接近。
在main 中,我尝试将函数指针分配给另一个函数指针,但没有问题。
void function1 (void) // Function definition
{
}
void function2 (void) // Function definition
{
}
void (*fptr)(void) = function2;
void (*stateTable2[]) (void) = {function1,fptr};
int main()
{
void(*fp)(void) = fptr;
return 0;
}
【问题讨论】:
-
在 main 中,您是在声明,而不是在分配。试试
fptr = function1; -
在
main中,您在运行时进行了初始化。与赋值一样,这里不需要常量表达式。对于具有静态持续时间的数据对象的初始化,您需要一个常量表达式。 -
...因此
void (*stateTable2[]) (void) = {function1,fptr};->void (*stateTable2[]) (void) = {function1, function2};
标签: c arrays static initialization function-pointers