函数指针数组错误:从不兼容的指针类型初始化

时间:2019-06-15 04:15:48

标签: c arrays pointers

我想创建一个函数指针数组,其中包含一个指向函数的指针数组。但是我一直在fun_ptr fun_ptr_arr[3] = {fun1, fun2, fun3};初始化程序中从不兼容的指针类型错误中进行初始化。

我尝试了typedef void (*fun_ptr) (myStruct**,char**);,但错误仍然存​​在,我不确定出了什么问题。

struct myStruct
{
    char *value;
    struct myStruct *next;
}
typedef void (*fun_ptr) (myStruct**,char*[]);

void fun1 (myStruct **theStruct, const char **arguments) {};
void fun2 (myStruct **theStruct, const char **arguments) {};
void fun3 (myStruct **theStruct, const char **arguments) {};

void main()
{
    fun_ptr fun_ptr_arr[3] = {fun1, fun2, fun3};
}

还有我的错误,对于每个功能

test.c:285:69: note: (near initialization for ‘fun_ptr_arr[0]’)
test.c:285:69: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
  fun_ptr fun_ptr_arr[3] = {fun1, fun2, fun3};
                            ^~~~~~~~

1 个答案:

答案 0 :(得分:2)

您的原型是typedef void (*fun_ptr) (myStruct**,char*[]);

您的功能是:void fun1 (myStruct **, const char **)

请注意多余的const

那些是不同的类型,因此,编译器会抱怨。