C 错误:函数声明为函数返回函数
我正在将windows程序集移植到linux。我有一些代码要移植。实际上,我是linux中C的新手。我知道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
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谢谢您的努力,但我仍然有相同的问题。您在得到答案后更改了问题。。不,这是一个打字错误。我仍然有这个问题。