资源描述:
《c语言各编程技巧.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、#definea(x,y)+(x*2+y)aaa=(3a(1,1));运行后aaa==3+(1*2+1)===6;2、#defineIP_PCB/*ipaddressesinnetworkbyteorder*/ip_addr_tlocal_ip;ip_addr_tremote_ip;/*Socketoptions*/u8_tso_options;/*TypeOfService*/u8_ttos;/*TimeToLive*/u8_tttl/*linklayeraddressresolutionhint*/IP_PCB_ADDRHINTstructi
2、p_pcb{/*CommonmembersofallPCBtypes*/IP_PCB;};宏定义IP_PCB下的多个变量由于在多个结构体中使用,故使用该宏定义,使用了3、串口数据接收协议定义相应的结构体对协议进行说明,在接受的第一个字节时将数据流的地址赋值给结构体的首地址,这样每接收到一个字节的数据就会自动添加到结构体相对应的协议变量中,例1:typedefstruct{uint8_tstart_byte;//0x2uint8_taddr;uint8_tupdate_byte;//0x35uint8_ttype;//softwareorfontuint8_tdata_l
3、ength[2];uint8_ts_data_pack_sn[2];uint8_tdata[10];uint8_tend_byte;//0x3uint8_tcheck_sum1;uint8_tcheck_sum2;}update_soft_datapack_t;update_soft_datapack_t*update_soft_datapack;uint8_tdata[14]={1,2,3,4,5,5,8,8,0x0a,0x0b,0x0b,0x03,0x31,0x32};uint8_t*datat;datat=data;*datat++=b;update_soft_da
4、tapack=(update_soft_datapack_t*)(data);在接受完毕之后,将所需数据传递给上一层的数据或同样定义的结构体如:uint8_tdata_next[3];memcpy(data_next,update_soft_datapack->data,3);。。。例2:当将某一个数组作为参数传递时强制转换为结构体时,定义如下typedefstruct{uint8_tstart_byte;//0x2uint8_taddr;uint8_tupdate_byte;//0x35uint8_ttype;//softwareorfontuint8_tdata_le
5、ngth[2];uint8_ts_data_pack_sn[2];uint8_tdata[10];uint8_tend_byte;//0x3uint8_tcheck_sum1;uint8_tcheck_sum2;}update_soft_datapack_t;update_soft_datapack_tupdate_soft_datapack;HandleUpdateSoftDatapack((update_soft_datapack_t*)s);//s为int*voidHandleUpdateSoftDatapack(update_soft_datapack_t*ind
6、)4、/*********************************************************************//*************************struct链表结构**************************//*********************************************************************/structsys_timeo{structsys_timeo*next;u32_ttime;sys_timeout_handlerh;void*arg;#ifL
7、WIP_DEBUG_TIMERNAMESconstchar*handler_name;#endif/*LWIP_DEBUG_TIMERNAMES*/};对于next下一结构体赋值时,通过判断是否为空添加入链表如for(t=next_timeout;t!=NULL;t=t->next){timeout->time-=t->time;if(t->next==NULL
8、
9、t->next->time>timeout->time){if(t->next!=NULL){t->next->time-=timeout->time;}timeo