在c中初始化一个新结构

Ela*_*nda 1 c syntax struct

我试图在c中初始化一个新的struc.

我的语法有什么问题?

    AddressItem_Callback_ContextType *context;

   //check if icons need to be downloaded
   if (pEntity->cBigIcon[0] != 0){
      if (res_get(RES_BITMAP,RES_SKIN, pEntity->cBigIcon) == NULL){

          context = {pEntity->iID, pEntity->cBigIcon};
          //context->Icon = pEntity->cBigIcon;
          //context->iID = pEntity->iID;

         res_download(RES_DOWNLOAD_IMAGE, pEntity->cBigIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context );
      }
   }
Run Code Online (Sandbox Code Playgroud)

我也得到了语法错误:

    AddressItem_Callback_ContextType *context = {0,NULL};

   //check if icons need to be downloaded
   if (pEntity->cBigIcon[0] != 0){
      if (res_get(RES_BITMAP,RES_SKIN, pEntity->cBigIcon) == NULL){

          //context = {pEntity->iID, pEntity->cBigIcon};
          context->Icon = pEntity->cBigIcon;
          context->iID = pEntity->iID;

         res_download(RES_DOWNLOAD_IMAGE, pEntity->cBigIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context );
      }
   }

   if (pEntity->cSmallIcon[0] != 0){
      if (res_get(RES_BITMAP,RES_SKIN, pEntity->cSmallIcon) == NULL){

          //context = {pEntity->iID, pEntity->cSmallIcon};
          context->Icon = pEntity->cSmallIcon;
          context->iID = pEntity->iID;

         res_download(RES_DOWNLOAD_IMAGE, pEntity->cSmallIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context );
      }
   }
Run Code Online (Sandbox Code Playgroud)

那么这个(3)应该有效吗?

 AddressItem_Callback_ContextType context = {0,NULL};

   //check if icons need to be downloaded
   if (pEntity->cBigIcon[0] != 0){
      if (res_get(RES_BITMAP,RES_SKIN, pEntity->cBigIcon) == NULL){

          //context = {pEntity->iID, pEntity->cBigIcon};
          context.Icon = pEntity->cBigIcon;
          context.iID = pEntity->iID;

         res_download(RES_DOWNLOAD_IMAGE, pEntity->cBigIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context );
      }
   }

   if (pEntity->cSmallIcon[0] != 0){
      if (res_get(RES_BITMAP,RES_SKIN, pEntity->cSmallIcon) == NULL){

          //context = {pEntity->iID, pEntity->cSmallIcon};
          context.Icon = pEntity->cSmallIcon;
          context.iID = pEntity->iID;

         res_download(RES_DOWNLOAD_IMAGE, pEntity->cSmallIcon, NULL, "",TRUE, 1, addressItem_icon_download_callback, context );
      }
   }
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 5

context = {pEntity->iID, pEntity->cBigIcon};
Run Code Online (Sandbox Code Playgroud)

{} 初始化列表只能在声明时使用,不能在赋值表达式中使用.

你必须在两个赋值语句中将其分解(为此你还必须初始化未初始化的context指针).