2013-06-27 94 views
2

雖然引用內核代碼herestruct page;被定義爲沒有成員(我猜這不是一個前向聲明)。沒有成員的結構

但在this後接受的答案說,這是不允許的。

然後我嘗試了樣品,

#include <stdio.h> 

struct page; 

struct arm_vmregion 
{ 
    unsigned long   vm_start; 
    unsigned long   vm_end; 
    struct page    *vm_pages; 
    int      vm_active; 
    const void    *caller; 
}; 

int main() 
{ 
    struct arm_vmregion aa; 
    return 0; 
} 

它編譯成功

empty_struct.c: In function ‘main’: 
empty_struct.c:15:22: warning: unused variable ‘aa’ [-Wunused-variable] 

請澄清我在這方面。

+4

它*是*前向聲明。 –

回答

8

一個空的結構是不一樣的預先聲明 - 空結構將有支撐,並且將不合法。前向聲明當然是好的。

struct foo; // forward declaration - OK 

struct bar { // empty struct - invalid 
}; 
+0

雅了:) :) ... – Jeyaram