我正在努力做的事情非常简单,我只是在弄清楚正确的语法。
我希望我的结构看起来像这样:
struct myStruct
{
functionPointer myPointer;
}
然后我在其他地方有另一个函数将函数传递给函数并返回我的struct的实例。这是它的作用:
struct myStruct myFunction(int (*foo) (void *))
{
myStruct c;
c.myPointer = foo;
return c;
}
我怎样才能让它真正起作用?什么是正确的语法:
functionPointer myPointer;
不正确)c.myPointer = foo
不正确)?答案 0 :(得分:3)
它与函数指针的任何其他实例没有什么不同:
struct myStruct
{
int (*myPointer)(void *);
};
虽然通常会使用typedef
来整理一下。
答案 1 :(得分:0)
或多或少:
struct myStruct
{
struct myStruct (*myPointer)(int (*foo)(void *));
};
typedef struct myStruct myStruct;
c.myPointer
应该没问题,但是你需要返回结构的副本,而不是指向现在消失的局部变量c
的指针。
struct myStruct
{
struct myStruct (*myPointer)(int (*foo)(void *));
};
typedef struct myStruct myStruct;
struct myStruct myFunction(int (*foo) (void *))
{
myStruct c;
c.myPointer = foo;
return c;
}
这编译但编译器(合理地)抱怨foo
实际上不是正确的类型。所以,问题是 - 结构中函数指针的正确类型是什么?这取决于你想要它做什么。