2016-07-06 43 views
0

我從編譯如下以下錯誤:錯誤與結構定義:場'myaiocb具有不完整的類型

任何想法嗎?

struct cache_ent { 
    struct aiocb myaiocb;   
#ifdef _LARGEFILE64_SOURCE `enter code here` 
#if defined(__CrayX1__) 
    aiocb64_t myaiocb64;   
#else 
    struct aiocb64 myaiocb64;  
#endif 
#endif 
    long long fd;    
    long long size;    
    struct cache_ent *forward;  
    long long direct;   

    char *real_address;   

    volatile void *oldbuf;   

    int oldfd;    
    size_t oldsize;    
}; 

錯誤消息如下: - >錯誤:字段「myaiocb具有不完整的類型結構的aiocb myaiocb; ^ - > error:field'myaiocb64'has incomplete type struct aiocb64 myaiocb64;/*用於大文件模式*/

+0

什麼是'aiocb'?它的聲明在哪裏? – ForEveR

+0

在單獨的頭文件中聲明的結構..導入到這個http://man7.org/linux/man-pages/man7/aio.7.html – ijuio

+0

typedef struct aiocob int aio_fildes;/*文件描述符*/ off_t aio_offset;/*文件偏移*/ volatile void * aio_buf;/*緩衝區的位置*/ size_t aio_nbytes;/*傳輸長度*/ int aio_reqprio;/*請求優先權*/ struct sigevent aio_sigevent; int aio_lio_opcode; // lio_listio()only */ }; – ijuio

回答

1

對於頭文件unistd.h,您最有可能缺少#include--這是應該定義struct aiocb64的地方。

+0

我看起來不是問題。我已經明確定義了結構aiocob,並且仍然是相同的錯誤。可能是因爲編譯器抱怨的不是數據類型,而是變量聲明本身......可能是因爲編譯時未能識別myaiocob的大小?我編輯了這個問題來包含aicob結構的定義 – ijuio

相關問題