2014-01-31 78 views
1

我正在将一个Windows程序集移植到linux。我有一定的代码进行移植。我实际上是一个Linux新手。我知道C基础是相同的!错误:函数声明为函数返回函数

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

typedef long (*pReaderAddRef)(struct sReader *); 
typedef long (*pReaderDelRef)(struct sReader **); 

上面的代码给我“pReaderAddRef”声明函数返回一个函数错误。

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

请帮忙。

+0

你改变了你的问题后得到一个答案.. –

+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; 
} 
+0

我一次又一次地检查。 –

+0

这真的不是一个问题在这里。我刚刚编辑了这个问题。谢谢! –

+3

@jparthj你问一个问题。有人给出了有效的答案。那么你改变了这个问题,解决了这个问题?来吧,这只是简单的烦人。 –