2014-01-31 11 views
1

Я переношу сборку окон в Linux. У меня есть определенный код для порта. Я на самом деле новичок с C в 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 Вы задаете вопрос. Кто-то дает верный ответ. Затем вы меняете вопрос, фиксируя проблему? Пошли, это просто раздражает. –

Смежные вопросы