2016-02-12 54 views
-6

這裏有一個是給我當編譯.c文件,我得到以下錯誤:錯誤:數組類型具有不完整的元素類型

struct label labelArray[100]; 

我覺得它沒有被正確定義錯誤的行。

下面的代碼的其餘部分,如果有幫助:

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 

int main(int argc, char const *argv[]) { 
int curr_addr = 0; 
int is_instruction = 0; 

struct label labelArray[100]; 

while(1) { 
    char* buffer = NULL; 
    size_t size = 0; 

    if (getline(&buffer, &size, stdin) == -1) { 
     // end of file 
     break; 
    } else { 
     char* line = buffer; 
     if (line[0] == '\t') { 
      // ignore first tab 
      line++; 
     } 

     const char *ptr = strchr(line, ':'); 
     if (ptr) { 
      int endlabel = ptr - line + 2; 
      line += endlabel; 
     } 

...

+2

請** [編輯] **與您的問題[MCVE]或[SSCCE(短的,獨立的,正確的示例)(http://sscce.org) – NathanOliver

+0

你需要展示更多的代碼讓人們瞭解錯誤,否則這個問題將會被關閉。 – Haris

+0

您是否在此行之前定義了'struct label'? – dbush

回答

1

你從未定義struct label。如果不先定義類型,則無法定義給定類型的變量。

main之前加上struct label的定義。然後您可以創建該類型的變量。

1

當寫入行

struct label labelArray[100]; 

您聲明結構的陣列,其中每個元素是struct label的精確副本。但要做到這一點,首先你需要聲明struct label。您應該在main之前聲明它。

如果你不能理解所有這一切,簡單地說,你正試圖使用​​struct而不用聲明它。所以,就像你沒有聲明一個變量並且使用它時,編譯器會給出一個錯誤。

而且,看到這樣:Undefined Variable error

+0

該鏈接是用'extern'聲明的變量,並不適用於此處。 – crashmstr

相關問題