typedef struct
{
  #ifdef BIG_ENDIAN
  unsigned char FLAG_TGyro :2;
  unsigned char FLAG_RGyro :2;
  unsigned char FLAG_RAcc :2;
  unsigned char FLAG_YType :2;
  #else
  unsigned char FLAG_YType :2;
  unsigned char FLAG_RAcc :2;
  unsigned char FLAG_RGyro :2;
  unsigned char FLAG_TGyro :2;
  #endif
  unsigned short timer;
  short angle[2];
  short gyro[3];
  short acc[3];
  unsigned short temp;
}VG_DATA_STRUCT vg_data;
typedef struct
{
  double time;
  double angle[2];
  double gyro[3];
  double acc[3];
  double temp;
}VG_MEAS_STRUCT vg_meas;
最后的两个变量定义对么,为什么有这样的错误提示:error C2146: syntax error : missing ';' before identifier 'vg_data'

解决方案 »

  1.   

    不对typedef struct 

    #ifdef BIG_ENDIAN 
    unsigned char FLAG_TGyro :2; 
    unsigned char FLAG_RGyro :2; 
    unsigned char FLAG_RAcc :2; 
    unsigned char FLAG_YType :2; 
    #else 
    unsigned char FLAG_YType :2; 
    unsigned char FLAG_RAcc :2; 
    unsigned char FLAG_RGyro :2; 
    unsigned char FLAG_TGyro :2; 
    #endif 
    unsigned short timer; 
    short angle[2]; 
    short gyro[3]; 
    short acc[3]; 
    unsigned short temp; 
    }VG_DATA_STRUCT;
    VG_DATA_STRUCT vg_data; 
      

  2.   


    typedef struct 

    #ifdef BIG_ENDIAN 
        unsigned char FLAG_TGyro :2; 
        unsigned char FLAG_RGyro :2; 
        unsigned char FLAG_RAcc :2; 
        unsigned char FLAG_YType :2; 
    #else 
        unsigned char FLAG_YType :2; 
        unsigned char FLAG_RAcc :2; 
        unsigned char FLAG_RGyro :2; 
        unsigned char FLAG_TGyro :2; 
    #endif 
        unsigned short timer; 
        short angle[2]; 
        short gyro[3]; 
        short acc[3]; 
        unsigned short temp; 
    }VG_DATA_STRUCT;
    VG_DATA_STRUCT vg_data; 
    上面定义的是那样的类型,下面有个这个类型的引用和赋值,该如何转换。
    unsigned char chr,CheckSum,*PacketBody=&vg_data;
      

  3.   

    empty controlled statement found; is this the intent?,
    下面这段程序运行出了上面的错误是怎么回事?请教阿
    while(TRUE)
    {
    switch(State)
    {
    /*waiting for header field*/
    case 0:
    /*no data available, return*/
    if(!ReadFile(hCom,chr,1,NULL,NULL));
    return FALSE;
    /*if not header, skip char*/
    if(chr!=HEADER)
    { break;
    State=1;
    Count=0;
    }
    /*Receiving packet body*/
    case 1:
    /*no data available, return*/
    if(ReadFile(hCom,chr,1,NULL,NULL));
    return TRUE;
    PacketBody[Count++]=chr;
    /*One data package*/
    if(Count >= RECSIZE)
    {
    Count--; /*checksum not counted*/
    CheckSum=CalcChecksum(PacketBody,Count);
    /*Checksum correct?*/
      

  4.   

    if(!ReadFile(hCom,chr,1,NULL,NULL)); 
    if(ReadFile(hCom,chr,1,NULL,NULL)); 把上面两行代码末尾的“;”去掉
      

  5.   

    可以强制转换:unsigned char chr,CheckSum,*PacketBody=(unsigned char*)&vg_data;  
    也可以定义一个结构指针再赋值:VG_DATA_STRUCT *p_vg_data=&vg_data;