2016-03-27 28 views
0

C'deki en son programım basit cebir ile uğraşmak zorunda. Temel anlayışımın sadece bir değerin başlatılabileceği bir birlik oluştururken (kaba/kaba açıklamalarım için özür dilerim), aynı adlı farklı veri türlerine sahip değişkenler göremediğimi görmek beni şaşırttı. İşteTekil kopya üyeler

typedef union 
{ 
    int val; 
    Unknown val; 
}Value; 

hata olduğunu: Sadece acemi varsayımlarda

In file included from grid.c:5:0: 
line.h:9:10: error: duplicate member ‘val’ 
    Unknown val; 

Am İşte kod nedir? Eğer öyleyse, neden bir sendikada değişken isimleri tutmak gerekir. Okumak için zaman ayırdığınız için teşekkür ederiz. DÜZENLEME: olur ne olmaz:

typedef struct 
{ 
    char label; 
}Unknown; 
+0

'un birleşim alanıdır. Yinelenen adlar olamaz. –

cevap

1

Aynı şeyi adlandırılabilir iki farklı değişken tiplerini varsaymak yanlış bir varsayımdır. Bir tamsayıya veya değer olarak Unkown türüne eşit bir değer ayarlamaya çalıştığınızda bir sorun ortaya çıkar. Program, bilinmeyen veya int türüne başvurup başvurmadığınızı bilmez (sizin için sihirli bir şekilde çözmez). Bu nedenle, farklı şeyler adlandırmak daha iyidir. Ayrıca, neyin eşit olacağının uygun bir şekilde temsil edileceği şeyleri isimlendirmek kongre isimlendirmesi daha iyidir.