[英]issue with creating a one dimensional array of structs in C
所以問題是對於我的項目,我必須為我的操作系統類創建一個逆表頁面。 助教寫下了一些基本的代碼來開始。 要創建表,他說該表應該是一個結構體,其中*包括諸如頁大小和沿翻譯頁數之類的元數據 *表(可以是二維數組,也可以是一維結構數組)所以這里是代碼:
#include <stdio.h>
#include <stdlib.h>
#define N 500
struct invTablePage{
invTablePage page[N];
};
struct table
{
int numOfPages;
int pageSize;
int array[struct invTablePage];
};
void initInverted(struct invTablePage **invTable, int memSize, int frameSize);
int translate(struct invTablePage *invTable, int pid, int page, int offset);
void releaseInverted(struct invTablePage **invTable);
但是當我編譯代碼時,它給了我這個
error: expected expression before ‘struct’
error: array type has incomplete element type
struct invTablePage page[N];
我試過使用 size of 但這不起作用。 顯然 int array[struct invTablePage] 可以完成,但我不明白如果嘗試獲取結構的大小更有意義,那甚至應該如何工作。 至於數組類型有不完整的元素錯誤,如果我已經聲明了我的 invTablePage 類型的結構,我不確定那個錯誤,所以它應該可以工作。 任何幫助,將不勝感激
struct invTablePage{ invTablePage page[N];
};
你不能像這樣定義一個結構。一個結構可以有一個指向它自己類型的指針,但不能有它自己類型的成員。
您要求編譯器在定義之前創建一個類型為 invTablePage 的數組。 您需要定義:
struct invTablePage{
void* page;
};
然后在初始化期間為頁面成員分配一個數組:
void function()
{
invTablePage table_page;
invTablePage* entry;
table_page.page = (void*) calloc(N, sizeof(invTablePage));
/* for example to access element index = 3 */
entry = (invTablePage*) table_page.page[3];
}
你最好實現一個鏈表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.