我正在尝试使用结构体作为函数容器,但我无法这样做。 这是我的结构代码,别名为
methods
typedef struct {
void (*addAtHead)(LinkedList*,int);
void (*addAtTail)(LinkedList*,int);
void (*remFromHead)(LinkedList*);
void (*remFromTail)(LinkedList*);
}methods;
这里我将
methods
的指针指向相应的函数
methods LinkedListF;
LinkedListF.addAtHead = addAtH;
LinkedListF.addAtTail = addAtT;
LinkedListF.remFromHead = remFromH;
LinkedListF.remFromTail = remFromT;
预计
LinkedListF.addAtHead(LinkedList *l,int value)
函数调用会调用addAtH
,但在编译期间,它给出了
LinkedList.c:43:12: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
43 | LinkedListF.addAtHead = addAtH;
....and more errors
我已经验证没有丢失分号或其他错误,如果我尝试使用以下代码,它也可以正确编译
methods LinkedListF = {addAtH,addAtT,remFromH,remFromT};
有人可以解释我哪里做错了吗?
您没有显示的是以下内容位于函数之外:
methods LinkedListF;
LinkedListF.addAtHead = addAtH;
LinkedListF.addAtTail = addAtT;
LinkedListF.remFromHead = remFromH;
LinkedListF.remFromTail = remFromT;
仅允许在函数之外进行声明。最后四行不是声明。