1

ファイル「vector.c」にこの構造体があります。

struct Vector
{
int * m_items;
int m_size;
int m_extSize;
int m_numItems;
};

「main.c」で、特定のベクターの値 m_items が NULL かどうかを確認しようとしています:

if (! vec->m_items)
        printf("not fail\n");

「vec」を値で初期化した後に実行します-ベクトルには1つの値があります(チェックしました)。ただし、gcc は上記の行にエラーを書き込んでいます。

Error: dereferencing pointer to incomplete type

それはなぜです?

4

1 に答える 1

2

You have to move the entire definition of Vector to a header file and include it in both vector.c and main.c.

Adding a typedef struct Vector Vector; is not enough. That merely tells the compiler that there is a type Vector and is defined elsewhere, so, it is incomplete. It lets you declare pointers to it because it doesn't need to know which members it has in order to allocate a pointer. All pointers are the same size.

于 2013-01-08T19:05:41.867 に答える