将 typedef 函数指针作为参数传递问题

Passing typedef function pointer as an argument problem

我只是不知道 typedef 函数指针是如何传递给 下面的 "uniqueOrderedListCreate" 函数,我所知道的是当我们声明一个函数指针的类型定义时,我们需要在作为参数传递时添加一个参数,例如:

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);

function declarations.

中不需要给出函数参数名称
UniqueOrderedList uniqueOrderedListCreate(copyElements, freeElements,
    elementsEquals, elementGreaterThan);

这只是声明了一个名为 uniqueOrderedListCreate 的函数,它接受四个指定类型的未命名参数和 return 个 UniqueOrderedList。给出函数定义的地方,必须给参数起名:

UniqueOrderedList uniqueOrderedListCreate(copyElements a, freeElements b,
    elementsEquals c, elementGreaterThan d)
{
    /* ... */
}

也没有要求声明中给出的名称与定义中给出的名称相匹配。只有函数的签名(return 类型和参数类型)需要匹配。