2013-06-27 175 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