我想構建一個名爲「cache」的結構,它包含一個容器(一個已經實現的List類型的數組)和一個迭代器。 當我試圖使容器中的下一個List的迭代器點我得到「指向未知結構的指針的增量」和「指向不完整類型的指針的算術」。我喜歡一個解釋,我做錯了什麼:爲什麼我會得到「指向未知結構的指針增量」?
名單如下typedef操作:
typedef struct List_t *List;
所以列表是一個指向List_t結構。
緩存定義如下:
typedef struct cache_t* Cache;
struct cache_t {
List* container;
int cache_size;
List iterator;
};
所以迭代器是一個列表,其是一個指向List_t在陣列中(容器)。 我試圖做的是:
cache->iterator ++; //cache is an object of type Cache
其中,因爲據我所知,應該由移動的sizeof(列表)迭代器到數組中的下一個列表。那麼爲什麼我會收到錯誤?
謝謝!
顯示'cache'的定義.. –
顯示'struct List_t'的定義,它不在您的發佈中。如果它不在源文件中,那麼錯誤似乎是合乎邏輯的,因爲'struct List_t'是不完整的類型,它的大小是未知的,所以它的指針(類型'List')不能被增加。 – user1969104
不要'typedef'指針。這隱藏了語義和結果的錯誤,就像你展示的那樣。相反,只能明確地使用它們。 (無論如何,指針的名稱「List」都是有誤導性的)。 – Olaf