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

有关结构的使用有关问题

2012-12-29 
有关结构的使用问题。typedef struct{unsigned char info[PKT_LEN]}packetstatic int phl_ready 0bool

有关结构的使用问题。
typedef struct{
unsigned char info[PKT_LEN];
}packet;

static int phl_ready = 0;
bool no_nak=true;

typedef struct FRAME { 
unsigned char kind;
seq_nr ack;
seq_nr seq;
packet data;
unsigned int  padding;
}Frame;

static int between(seq_nr a,seq_nr b,seq_nr c){
if((a <= b && b < c) || (c < a && a <= b) || (b < c && c < a))
return true;
else
return false; 
}
static void put_frame(unsigned char *frame, int len){
*(unsigned int *)(frame + len) = crc32(frame, len);
send_frame(frame, len + 4);
phl_ready = 0;
}
static void send_data(unsigned char fk,seq_nr frame_nr,seq_nr frame_expected,packet buffer[]){
Frame s;
s.kind = fk;
s.seq = frame_nr;                          
s.ack = (frame_expected + MAX_SEQ)%(MAX_SEQ + 1);
if(fk == FRAME_DATA)
memcpy(s.data.info, buffer[frame_nr%NR_BUFS].info, PKT_LEN);
if(fk == FRAME_NAK)
no_nak = false; 

dbg_frame("Send DATA %d %d,ID %d\n", s.seq,s.ack,s.data.info);//有点问题。。

if(fk == FRAME_DATA){
put_frame((unsigned char *)&s, 3 + PKT_LEN);
start_timer(frame_nr%NR_BUFS, DATA_TIMER);
}
if(fk == FRAME_NAK||fk==FRAME_ACK)
put_frame((unsigned char *)&s, 2);
stop_ack_timer();
}
重点在有注释的那行,s.data.info怎么是个固定的值了,完全不能理解啊。,,
[解决办法]
你把buffer[frame_nr%NR_BUFS].info打印出来看是不是固定值
[解决办法]

dbg_frame("Send DATA %d %d,ID %d\n", s.seq,s.ack,s.data.info);//有点问题。。

应该是dbg_frame()这个函数是实现有问题,可以查下这个函数实现 

热点排行