我正在将一个Windows程序集移植到linux。我有一些端口代码。我实际上是Linux中的C新手。我知道C基本原理是一样的!
typedef struct sReader
{
pReaderAddRef addRef;
pReaderDelRef delRef;
}pReader, *pSReader;
typedef long (*pReaderAddRef)(struct sReader *);
typedef long (*pReaderDelRef)(struct sReader **);
上面的代码给出了错误'pReaderAddRef'声明为函数返回函数。
我理解回调函数的工作方式。但我真的不知道如何解决这个错误。
请帮助。
答案 0 :(得分:3)
虽然我不明白你的原始错误信息 - 我得到了
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;
}