2012-06-13 17 views
6

Yapı yalnızca bir işlevde kullanılıyorsa, bu işlevde bildirebilir miyim? Bunu yapabilir:Yerel yapı c

int func() 
{ 
    struct { 
     int a, b; 
    } s; 

    s.a=5; 

    return s.a; 
} 

gcc üzerinde yuttum ama onun yerine "Maalesef bunu yapamaz" demek anlayamadık çok garip görünümlü hatayı yaydığı.

+9

Hata iletisini sağladıysanız yardımcı olabilir. – Ryan

+0

@Rayn Hatayı alıp alamayacağımı görmek için tekrar denedim ve bu sefer derledim. Bir sözdizimi sorunu için çok garip bir görünüm hatasıydı (içinde karışık bir C++ ismi gibi görünen bir bağlayıcı hatasıydı) – baruch

+0

Bununla ilgili bir sorun yok. Bir şeyi yeniden adlandırmayı deneyin; Belki mevcut bir isim ile çarpıştın. Bir C++ derleyici kullanıyor musunuz? – wildplasser

cevap

9

Bu kesinlikle geçerli bir C89/C99/C11 kodudur, etiketsiz bir yapı ve nesnenin blok kapsamı vardır. Etikete ilişkin tanımlayıcıyı görmek için C99 6.7.2.3p6'yı kontrol edin.