[英]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.