簡體   English   中英

在 C 中創建一維結構數組的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM