2014-01-12 455 views
6
#include <stdio.h>  
typedef struct 
    {  
     int num ; 
    } NUMBER ; 

    int main(void) 
    { 
     struct NUMBER array[99999]; 
     return 0; 
    } 

我發現了編譯錯誤:Ç編譯錯誤:數組類型具有不完整的元素類型

error: array type has incomplete element type 

相信問題是,我聲明瞭結構的陣列不正確。看起來這就是你在查看時聲明的方式。

回答

13
struct NUMBER array[99999]; 

應該

NUMBER array[99999]; 

,因爲你已經typedef編你的結構。


編輯:由於OP聲稱,我建議他不工作,我編這個測試代碼,它工作正常:

#include <stdio.h> 
typedef struct 
{ 
    int num ; 
} NUMBER ; 

int main(void) 
{ 
    NUMBER array[99999]; 
    array[0].num = 10; 
    printf("%d", array[0].num); 
    return 0; 
} 

running code

+2

或'struct NUMBER {int num;};'不帶typedef – SHR

+1

@SHR是的。它是。 – haccks

+0

NUMBER array [99999];給了我更多的錯誤。其中一個狀態:NUMBER未被聲明。 –

3

你有

typedef struct 
    {  
     int num ; 
    } NUMBER ; 

這是

struct anonymous_struct1 
    {  
     int num ; 
    }; 
typedef struct anonymous_struct1 NUMBER ; 

速記現在你有兩個等同類型:

struct anonymous_struct1 
NUMBER 

您可以使用這兩個,但anonymous_struct1是在struct名稱空間,並且必須始終在之前才能使用。 (這就是C和C++之間的一個主要區別。)

因此,無論你只是做

NUMBER array[99999]; 

,或者你定義

typedef struct number 
    {  
     int num ; 
    } NUMBER ; 

或者乾脆

struct number 
    {  
     int num ; 
    }; 

然後做

struct number array[99999]; 
+0

結構編號 { int num; }; –

+1

我試過你的最後一種方法,但它仍然說:錯誤:數組類型具有不完整的元素類型 –

相關問題