我只是不知道如何将typedef函数指针传递给 下面的“ uniqueOrderedListCreate”函数,我知道的是,当我们声明一个函数指针的typedef时,我们需要在作为参数传递时添加一个参数,例如:
UniqueOrderedList uniqueOrderedListCreate(copyElements a, freeElements b,
elementsEquals c, elementGreaterThan d);
在这里我误会了吗?
#ifndef UNIQUEORDEREDLIST_H_
#define UNIQUEORDEREDLIST_H_
#include <stdbool.h>
typedef struct uniqueOrderedList_t* UniqueOrderedList;
typedef void* Element;
typedef Element (*copyElements)(Element);
typedef void (*freeElements)(Element);
typedef bool (*elementsEquals)(Element, Element);
typedef bool (*elementGreaterThan)(Element e1, Element e2);
UniqueOrderedList uniqueOrderedListCreate(copyElements, freeElements,
elementsEquals, elementGreaterThan);
答案 0 :(得分:0)
没有必要在function declarations中给出函数参数名称。
UniqueOrderedList uniqueOrderedListCreate(copyElements, freeElements,
elementsEquals, elementGreaterThan);
这简单地声明了一个名为uniqueOrderedListCreate
的函数,该函数接受四个指定类型的未命名参数并返回一个UniqueOrderedList
。在给出函数定义的地方,必须给参数命名:
UniqueOrderedList uniqueOrderedListCreate(copyElements a, freeElements b,
elementsEquals c, elementGreaterThan d)
{
/* ... */
}
也不要求声明中给出的名称与定义中给出的名称匹配。仅功能的签名(返回类型和参数类型)需要匹配。