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