【发布时间】:2018-04-21 12:29:58
【问题描述】:
我正在尝试初始化一个包含函数指针的结构数组:
typedef struct struct_actioncommand {
char *action;
void (*command)(my_type);
} type_actioncommand;
为了用函数名初始化每个指针,我使用了这个方法:
static const type_actioncommand g_cmd_tab[] = {
{"Action1", function1},
{"Action2", function2},
{"Action3", function3},
{NULL, NULL}
};
但它不起作用。 当我尝试使用“gcc”编译时,我收到以下消息:
myfile.c:16:3: 错误:从不兼容的指针类型初始化 [-Werror]
{"Action1", function1},
^
myfile.c:16:3: 错误:(g_cmd_tab[0].command 的初始化附近)[-Werror]
myfile.c:17:3:错误:从不兼容的指针类型初始化 [-Werror]
{"Action2", function2},
^
myfile.c:17:3: 错误:(g_cmd_tab[1].command 的初始化附近)[-Werror]
myfile.c:18:3:错误:从不兼容的指针类型初始化 [-Werror]
{"Action3", function3},
^
myfile.c:18:3: 错误:(g_cmd_tab[2].command 的初始化附近)[-Werror]
cc1:所有警告都被视为错误
每个函数都是根据这个原型定义的:
void function1(my_type *var1);
我现在有点困惑,因为我不知道如何解决我的问题。 有什么想法吗?
【问题讨论】:
-
你能告诉我们
function1等吗?或者至少是他们的原型(声明)?虽然我们更喜欢Minimal, Complete, and Verifiable Example。 -
function1、function2、function3的定义是什么? -
此外,这些错误看起来像是来自 GCC,这通常非常适合提供信息说明,例如预期内容和给出的内容。您是否复制粘贴了完整输出,包括此类信息说明?
-
在结构中,
command的参数是my_typeobject,但您为function1显示的声明显示参数是 指针 到my_type。不同且不兼容的类型。 -
@Roulians 你读过你粘贴的代码吗?星星很重要。
标签: c arrays pointers structure