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

时间:2018-12-11 02:44:26

标签: c function arguments function-pointers typedef

我只是不知道如何将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);

1 个答案:

答案 0 :(得分:0)

没有必要在function declarations中给出函数参数名称。

UniqueOrderedList uniqueOrderedListCreate(copyElements, freeElements,
    elementsEquals, elementGreaterThan);

这简单地声明了一个名为uniqueOrderedListCreate的函数,该函数接受四个指定类型的未命名参数并返回一个UniqueOrderedList。在给出函数定义的地方,必须给参数命名:

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

也不要求声明中给出的名称与定义中给出的名称匹配。仅功能的签名(返回类型和参数类型)需要匹配。