enum 
  {AD_PCI_BAR0 =0;
   AD_PCI_BAR1 =1;
   AD_PCI_BAR2 =2;
   AD_PCI_BAR3 =3;
  };typedef enum
  {GS3401_REG    =AD_PCI_BAR0; 
   GS3401_REG_IO =AD_PCI_BAR1;
   GS3401_SPACE0 =AD_PCI_BAR2; 
   GS3401_SPACE1 =AD_PCI_BAR3;
  }GS3401_ADDR;  
enum是枚举类型吧,上面的enum和  typedef enum有什么区别啊?

解决方案 »

  1.   

    delphi的枚举类型:
    TEnum = (AD_PCI_BAR1, AD_PCI_BAR2, AD_PCI_BAR3, AD_PCI_BAR4);typedef只不过定义一个枚举类型的别名为GS3401_ADDR, 跟enum没关系
      

  2.   

    那我这样改对吗?能讲详细点吗,我很菜啊:)type
      TEnum = (AD_PCI_BAR1, AD_PCI_BAR2, AD_PCI_BAR3, AD_PCI_BAR4);type
      GS3401_REG    =AD_PCI_BAR0; 
      GS3401_REG_IO =AD_PCI_BAR1;
      GS3401_SPACE0 =AD_PCI_BAR2; 
      GS3401_SPACE1 =AD_PCI_BAR3;
      

  3.   

    type
      GS3401_ADDR = (GS3401_REG, GS3401_REG_IO, GS3401_SPACE0, GS3401_SPACE1);这样就OK
      

  4.   

    to  flyinwuhan(制怒·三思而后行) :你的TYPE里面没有反映出AD_PCI_BAR0;AD_PCI_BAR1;AD_PCI_BAR2;AD_PCI_BAR3; 还有别的定义方法吗   
      

  5.   

    enum 
      {AD_PCI_BAR0 =0;
       AD_PCI_BAR1 =1;
       AD_PCI_BAR2 =2;
       AD_PCI_BAR3 =3;
      };这仅仅是定义了几个常量而已typedef enum
      {GS3401_REG    =AD_PCI_BAR0; 
       GS3401_REG_IO =AD_PCI_BAR1;
       GS3401_SPACE0 =AD_PCI_BAR2; 
       GS3401_SPACE1 =AD_PCI_BAR3;
      }GS3401_ADDR; 用常量代替0,1,2,3,为了方便修改或者增加可读性所以可以这样定义:
    const
     AD_PCI_BAR0 =0;
       AD_PCI_BAR1 =1;
       AD_PCI_BAR2 =2;
       AD_PCI_BAR3 =3;type
      GS3401_ADDR = (GS3401_REG=AD_PCI_BAR0, GS3401_REG_IO=AD_PCI_BAR1, GS3401_SPACE0=AD_PCI_BAR2++, GS3401_SPACE1=AD_PCI_BAR3);