結構體及共用體的初始化方法


結構體初始化:
 
/************************************************************
*  全局變量定義
************************************************************/
AD_CTL_ST g_AdCtl; //定義結構體變量
AD_BUF_ST g_AdBuf[BUF_NUM]; //定義結構體數組
 
 
/************************************************************
*  初始化結構體
************************************************************/
PRIVATE void AdStcInit(void)
{
    int i;
    AD_CTL_ST *pAC = &g_AdCtl;
    AD_BUF_ST *pAB = g_AdBuf;
   
    pAC->Flag = OFF;
    pAC->Cnt  = CLEAR;
   
    for(i = 0; i < BUF_NUM; i++,pAB)
    {
  /* 均可實現初始化, MemSet函數需自己實現 */
        //(void)MemSet(g_AdBuf[i].AdBuf, CLEAR, sizeof(g_AdBuf));
        (void)MemSet(pAB->AdBuf, CLEAR, sizeof(pAB->AdBuf));
    }
}

共用體初始化:
 
    在共用體變量定義的同時只能用第一個成員的類型值進行初始化,共用體變量初始化的一般形式:union 共用體類型名 共用體變量 = { 第一個成員的類型名 };
/************************************************************
*  定義宏
************************************************************/
 #define SYS_TF_NUM  1U
 
 
/************************************************************
*  定義結構體
************************************************************/
typedef union
{
    INT8U _c;
    struct
    {
        INT8U flg   :1;
        INT8U ctr   :7;
    }Bits;
}Sys_TaskFlg_st;
 
//定義聯合體變量
 Sys_TaskFlg_st Sys_TaskFlg[SYS_TF_NUM];
/************************************************************
*  初始化
************************************************************/
PRIVATE void StructInit(void)
{
  for(i=0;i<=SYS_TF_NUM;i++)
  {
    sys_TaskFlg[i]._c   = 0;
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM