gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:24:05 24 4
gpt4 key购买 nike

我只是不明白 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);

最佳答案

不需要在function declarations中给出函数参数名称。 .

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

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

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

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

关于c - 将 typedef 函数指针作为参数传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com