C 错误:函数声明为函数返回函数

C 错误:函数声明为函数返回函数,c,linux,gnu,porting,C,Linux,Gnu,Porting,我正在将windows程序集移植到linux。我有一些代码要移植。实际上,我是linux中C的新手。我知道C的基本原理是一样的 typedef struct sReader { pReaderAddRef addRef; pReaderDelRef delRef; }pReader, *pSReader; typedef long (*pReaderAddRef)(struct sReader *); typedef long (*pReaderDelRef)(struct s

我正在将windows程序集移植到linux。我有一些代码要移植。实际上,我是linux中C的新手。我知道C的基本原理是一样的

typedef struct sReader
{
    pReaderAddRef addRef;
    pReaderDelRef delRef;
}pReader, *pSReader;

typedef long (*pReaderAddRef)(struct sReader *);
typedef long (*pReaderDelRef)(struct sReader **);
上面的代码给出了声明为返回函数的函数的错误

我理解回调函数的工作方式。但我真的不知道如何解决这个错误


请帮忙。

虽然我不明白您最初的错误消息-我收到了

f.c:3:5: error: unknown type name ‘pReaderAddRef’
f.c:4:5: error: unknown type name ‘pReaderDelRef’
使用您的原始代码-

您似乎混淆了顺序:为了使用函数指针,必须定义它们

struct sReader; // incomplete type, but ready to be used

//alternatively:
typedef struct sReader pReader, *pSReader; // taken from your edit, but these prefixes are misleading

typedef long (*pReaderAddRef)(struct sReader *); // or mytypename
typedef long (*pReaderDelRef)(struct sReader **);

struct sReader
{
    pReaderAddRef addRef; // Now you can use them
    pReaderDelRef delRef;
}

我一次又一次地检查,这真的不是问题。我刚刚编辑了这个问题。谢谢@你问一个问题。有人给出了正确的答案。然后你改变问题,解决问题?“得了吧,那真是太烦人了!”乔纳森·莱因哈特是的,我明白,但那是个打字错误。我只是没有复制粘贴代码,所以键入错误。@glglglgl谢谢您的努力,但我仍然有相同的问题。您在得到答案后更改了问题。。不,这是一个打字错误。我仍然有这个问题。