繁体   English   中英

结构函数指针错误

[英]Struct function pointer error

在结构my_struct中,有一个函数指针称为compute()。 声明如下:

struct my_struct
{
  double (*compute) (double input);
}

在一个单独的文件中,我初始化了该结构,因此可以将该函数指向另一个函数。

static const struct my_struct data;
data.compute = ......

问题是,无论我将函数指针设置为什么,都会对data.compute产生以下错误:

error: expected '=', ',', ';', 'asm', or '__attribute__' before '.' token

我已经多次使用'。'来使用结构的数据成员。 运算符,但我从未使用过函数指针。 这里需要其他东西吗?

尽管您已经将结构定义为const ,但是它应该可以在符号上起作用,但是您只能对其进行初始化,而不能在初始化后分配给它。

但是,这是与您得到的错误不同的错误。 它表现得好像data不是一个简单的单词,就像它在宏中扩展为奇数或沿这些线的东西一样。 结构类型是在标头中声明的,不是吗? 并且在}之后确实有分号,不是吗?

是的, const不是问题。 我试着删除它,只是得到相同的错误。 知道如何解决您正在谈论的最后一部分吗?

一方面,没有足够的代码-您没有提供MCVE( 最小,完整和可验证的示例 )-我们没有可编译的代码,也看不到您看到的错误(或类似错误)。 我们需要您的标头和少量显示该问题的代码。

您正在将data.compute = …写入函数内部,不是吗? 嗯:我怀疑不是 -您必须使用初始化… data = { … };或将赋值移动到函数内部。)

不,它不在函数中。 您能否详细说明… data = { … }; 我不了解这种语法; 第一个代表什么?

第一个static const struct my_struct但是我觉得太懒了以至于无法复制粘贴。 因此,您需要:

static const struct my_struct data = { .compute = sin };

或类似的内容(假设您包括<math.h>来提供sin的声明-或使用已经声明或定义的其他函数)。 如果您没有使用C99或更高版本的编译器而陷入困境):

static const struct my_struct data = { sin };

您不能在函数之外编写分配,这就是您的问题。 您必须使用初始化程序,或在函数内部编写赋值并删除const

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM