2016-07-06 14 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を有します。 ^ - >エラー:フィールド 'myaiocb64'に不完全な型struct aiocb64 myaiocb64;があります。/*大容量ファイルモードで使用する場合*/

+0

「aiocb」とは何ですか?その宣言はどこですか? – ForEveR

+0

構造体は別のヘッダファイルで宣言されています。このファイルにインポートします。http://man7.org/linux/manage/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()のみ*/ }; – ijuio

答えて

1

ヘッダファイルunistd.h#includeがありません - これはstruct aiocb64を定義する必要があります。

+0

私は問題ではありません。私は明示的に構造体aiocobを定義していますが、それと同じエラーです。コンパイラがデータ型ではなく変数宣言自体を訴えている可能性があります。myaiocobのサイズがコンパイル時に特定されていない可能性がありますか?私は、aicob構造体の定義を含めるように質問を編集しました – ijuio

関連する問題