求c语言高手指教,一段小程序!!!!!!!

[复制链接]
2614|6
 楼主| 枫恋00 发表于 2012-3-21 19:27 | 显示全部楼层 |阅读模式
#include<stdio.h>
#define ICMPBUF ((uip_icmpip_hdr *)&uip_buf[14])
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef struct
{
  /* IP header. */
  uint8 vhl,
      tos,         
     len[2],      
     ipid[2],        
     ipoffset[2],  
     ttl,         
     proto;     
  uint16 ipchksum;
  uint16 srcipaddr[2],
       destipaddr[2];
  /* ICMP (echo) header. */
  uint8 type,
    icode;
  uint16 icmpchksum;
  uint16 id,
     seqno;  
} uip_icmpip_hdr;
uint8 uip_buf[222];

void main(void)
{
ICMPBUF->vhl = 0x01;
printf("%d",&(ICMPBUF->vhl));
}

((uip_icmpip_hdr *)&uip_buf[14])这段代码是什么意思。
csq463276932 发表于 2012-3-22 11:28 | 显示全部楼层
把uip_buf[14]的地址转成(uip_icmpip_hdr *)形式.
个人见解。
suse-lj 发表于 2012-3-22 12:46 | 显示全部楼层
&  跟[] 那个的优先级高??
abcsmile 发表于 2012-3-22 12:48 | 显示全部楼层
学习路过
mohanwei 发表于 2012-3-22 15:31 | 显示全部楼层
C标准就是这样定义优先级的,如果不想去记,可以像我那样多加对括号:
#define ICMPBUF ((uip_icmpip_hdr *)&(uip_buf[14]))

但是像ch=*pBuff++;这种用得太频繁的就不用加括号了
tcc8073 发表于 2012-3-22 19:09 | 显示全部楼层
独立的东西就加个括号,不用花你多少时间,有时候**的东西不一定可靠
 楼主| 枫恋00 发表于 2012-3-22 19:41 | 显示全部楼层
5# mohanwei 是不是强制类型转换
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

60

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部