找回密码
 

tpyedef 用法心得

已有 794 次阅读 |个人分类:经验|系统分类:单片机| C语言, tpyedef

有如下一个数据结构,是怎么定义出来的?


LOCALM const nlocalm[3] ={    
  /* Ethernet: Local IP address */
#if ETH_ENABLE == 1
  {


       { _IP1, _IP2, _IP3, _IP4 },
       /* Default Gateway IP address */
       { _GW1, _GW2, _GW3, _GW4 },
       /* Subnet IP Mask */
       { _MSK1, _MSK2, _MSK3, _MSK4 },
       /* Primary DNS Server IP */
       { _pDNS1, _pDNS2, _pDNS3, _pDNS4 },
       /* Secondary DNS Server IP */
       { _sDNS1, _sDNS2, _sDNS3, _sDNS4 }
   },
#else
   {


        { 0,0,0,0 },


        { 0,0,0,0 },


        { 0,0,0,0 },


        { 0,0,0,0 },


         { 0,0,0,0 }


   },
#endif
  /* PPP: Local IP address */
#if PPP_ENABLE == 1
  {


      { _IP1P, _IP2P, _IP3P, _IP4P },
      /* Default Gateway IP address */
      { 0, 0, 0, 0 },
      /* Subnet IP Mask */
      { _MSK1P, _MSK2P, _MSK3P, _MSK4P },
      /* Primary DNS Server IP */
      { _pDNS1P, _pDNS2P, _pDNS3P, _pDNS4P },
      /* Secondary DNS Server IP */
      { _sDNS1P, _sDNS2P, _sDNS3P, _sDNS4P }
   },
#else
   {


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 }


  },
#endif
  /* SLIP: Local IP address */
#if SLIP_ENABLE == 1
  {


     { _IP1S, _IP2S, _IP3S, _IP4S },
     /* Default Gateway IP address */
     { 0, 0, 0, 0 },
     /* Subnet IP Mask */
     { _MSK1S, _MSK2S, _MSK3S, _MSK4S },
     /* Primary DNS Server IP */
     { _pDNS1S, _pDNS2S, _pDNS3S, _pDNS4S },
     /* Secondary DNS Server IP */
     { _sDNS1S, _sDNS2S, _sDNS3S, _sDNS4S }
  }
#else
   {


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 },


      { 0,0,0,0 }


  },
#endif
};


 


有上述定义可以看出 LOCALM是一个数据类型,问题关键是这个数据类型是怎么定的?


nlocalm[3]是有三个元素的数组,每个元素又是一个5行4列的二维数组。


所以LOCALM应该定义如下:


#define    U8  unsigned char 


typedef U8 LOCALM[5][4];  


 


稍微简单的用法如下:


tpyedef  int  ARR[10];


ARR  a;


若如上定义,则说明a为含有10个整型数据的数组。 


 


再简单的用法如下:


 


typedef int COUNT


COUNT i,j;


其含义显而易见了,不再赘述。


 


另外可以用typedef 声明结构体类型,如:


typedef struct


{


     int month;


     int  day;


      int  year;


}DATA;


DATA  birthday;  (不要写成struct DATA birthday)。

评论 (0 个评论)

GMT,

Powered by Discuz!

© 2001-2013 Comsenz Inc.

返回顶部