While refering kernel code here, struct page; is defined with no member(I Guess this is not a forward declaration).
But the accepted answer in this post says it is not allowed.
Then i tried a sample,
#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;
}
It compiles successfully
empty_struct.c: In function ‘main’:
empty_struct.c:15:22: warning: unused variable ‘aa’ [-Wunused-variable]
Please clarify me in this regard.
 
     
     
    