2014-01-31 76 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你問一個問題。有人給出了有效的答案。那麼你改變了這個問題,解決了這個問題?來吧,這只是簡單的煩人。 –