首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-08-27 
关于C语言源码的一些疑问,新手求救# define BUFSIZ 4096enum{COMMON_BUFSIZE (BUFSIZ 256*sizeof(voi

关于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来看待,即当这片内存存着这样一个结构体
[解决办法]
楼主 自己按照优先级再看下

热点排行