2016-03-27 15 views
0

Mein neuestes Programm in C muss sich mit einfacher Algebra beschäftigen. Wenn ich eine Vereinigung erstelle, bei der mein Grundverständnis ist, dass nur ein Wert initialisiert werden kann (Entschuldigung für meine grobe/grobe Erklärung), war ich überrascht zu sehen, dass Variablen mit unterschiedlichen Datentypen nicht gleich benannt werden können. Hier ist der Code:Union doppelte Mitglieder

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

Hier wird der Fehler:

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

Bin ich nur Anfänger Annahmen zu machen? Wenn ja, warum müssen Variablennamen in einer Union eindeutig sein? Danke, dass du dir die Zeit zum Lesen genommen hast. EDIT: Nur für den Fall:

typedef struct 
{ 
    char label; 
}Unknown; 
+0

Union in 'C' ist ein Namespace. Sie können keine doppelten Namen haben. –

Antwort

1

Es ist die falsche Annahme, zwei unterschiedliche Variablentypen annehmen können, die gleiche Sache zu nennen. Ein Problem tritt auf, wenn Sie versuchen, eine Ganzzahl oder Daten vom Typ Unkown gleich val zu setzen. Das Programm wird nicht wissen, ob Sie sich auf das Val des Typs Unknown oder int beziehen (es mag es nicht auf magische Weise herausfinden). Daher ist es besser, verschiedene Dinge zu nennen. Es ist auch eine bessere Namenskonvention, Dinge zu benennen, die genau das darstellen, was ihnen gleichgesetzt wird.