2016-09-13 13 views
5
#include<stdio.h> 
    typedef union 
    { 
      struct accname 
      { 
        char sbi[20]; 
        char canara[20]; 
        char hdfc[20]; 
        char icici[20]; 
      }; 
    } unionv; 

    void main() 
    { 
      unionv var1; 
      struct accname var2; 
      printf("sizeof union=%d\n",sizeof(var1)); 
      printf("sizeof str=%d\n",sizeof(var2)); 
    } 

Burada uyarı gösterilmektedir.Yapı bildirimi ve bazı tahmin edilemez çıkışlar göstergesindedir.

warning: declaration does not declare anything [enabled by default] }unionv 

berrak herkes neden uyarı gösteriyor musunuz?

+0

Neden yalnızca bir üye ile bir birlik beyan edersiniz? – Lundin

cevap

0

https://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html#Unnamed-Fields

göre isimsiz alan -fms-extensions alan aynı zamanda tag sahip bir tanım olabilir, kullanılan

typedef union 
{ 
    struct accname 
    { 
     //member  
    }; // without tag 
} unionv; 

Eğer, örneğin, bir etiketi olmadan structure veya union tanımı olmalıdır struct foo { int a; };, daha önce tanımlanmış bir structure veya union ya da struct foo gibi bir referans, ya da daha önce tanımlanmış biriçin bir typedef adına bir başvuruveya union türü.