我在庫中有幾個結構:邊,頂點,圖。 我希望隱藏結構的身體從用戶(用戶必須使用API),所以在頭文件(如edge.h。)我只是把:在自己的庫中取消引用指向不完整類型的指針
typedef struct edge edge_t;
和邊緣結構的定義是在edge.c
struct edge {...};
工作正常,但我不想從我自己的代碼隱藏結構的身體。我想在edge.c中使用:
vertex_t v;
v.some_attribute = x;
現在我得到解除指向不完整類型錯誤的指針,是否可以解決這個問題? 是否有任何其他選項使用訪問器(如用戶)的所有結構元素?
如果結構的結構在庫中是已知的,它不是不完整的類型。只有在你的庫中使用的頭文件定義了結構和一個只導出抽象類型的公共頭文件。 – 2012-04-20 10:41:39