关于C语言源码的一些疑问,新手

关于C语言源码的一些疑问,新手求救
# define BUFSIZ 4096
enum 

  COMMON_BUFSIZE = (BUFSIZ >= 256*sizeof(void*) ? BUFSIZ+1 : 256*sizeof(void*)) 
};
extern char bb_common_bufsiz1[COMMON_BUFSIZE];

struct globals {
const char *user;
const char *password;
struct len_and_sockaddr *lsa;
FILE *control_stream;
int verbose_flag;
int do_continue;
char buf[4]; /* actually [BUFSZ] */
} FIX_ALIASING;
#define G (*(struct globals*)&bb_common_bufsiz1)

请问的是,这里的#define G (*(struct globals*)&bb_common_bufsiz1)是什么意思呢,有什么作用呢?

------解决方案--------------------
目测了下,是首先将bb_common_bufsiz1的地址强制转换为struct globals*类型,然后再宏定义为G,应该是用于以后便于定义该类型的吧,望高手详细解答
------解决方案--------------------
&bb_common_bufsiz1是取数组的首地址, 转换成结构体指针(struct globals*),即这个指针指向数组的首地址,然后*是对指针的解引用,G即是结构体globals
bb_common_bufsiz1数组可以看做是一片内存,然后G的作用是把这篇内存当做结构体struct globals来看待,即当这片内存存着这样一个结构体
------解决方案--------------------
楼主 自己按照优先级再看下