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

时间:2014-01-31 08:57:23

标签: 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 sReader **);

上面的代码给出了错误'pReaderAddRef'声明为函数返回函数

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

请帮助。

1 个答案:

答案 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;
}