gpt4 book ai didi

c - 警告 : initialisation from incompatible pointer type via function table in c

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:25 25 4
gpt4 key购买 nike

(代码示例尚未经过测试 - 仅作为示例)

我有几个这样的声明:

void (* const a[])(void) = {func1, func2};
void func1() {};
void func2() {};
a[0]();

编译(如果它是真正的代码......)并且应该运行 func1。

但是,如果我想传递如下参数:

a[0](int 10);

然后我更改我的声明:

void (* const a[])(int) = {func1, func2};
void func1(int foo) {};
void func2(int foo) {};
a[0](10);

这也可以编译,但我收到以下警告:

warning: initialisation from incompatible pointer type.

生成的代码也运行良好,但我怀疑声明有问题。我可以找到几个关于如何构建不传递参数的函数表的示例,但我正在努力寻找一个示例来说明如何使用一个函数表。

最佳答案

很可能 func1func2 的声明将它们声明为以 void 作为参数,而不是以 int。你可能有

void func1(void);
void func2(void);

在一些头文件中。相反,你需要

void func1(int);
void func2(int);

这是因为声明

void (*const a[])(int)

表示 a 是一个函数指针数组,接受 int 并返回 void

关于c - 警告 : initialisation from incompatible pointer type via function table in c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8547288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com