Im Internet verbreitet sich mehr und mehr das Gerücht, dass unions vermieden werden sollen. Diese Aussage ist absolut falsch. unions sind eines der besten Sprachfeatures von C/C++ und sollten in jedem Programm verwendet werden.

Unions haben einige sehr eindeutige Vorteile:

Unions sparen Unmengen an Speicherplatz

Ein großer Gegenspieler der union in C ist das struct. Beide verhalten sich sehr ähnlich, aber ein struct braucht unverhältnismäßig mehr Speicher!

Schauen wir uns zwei kleine Codebeispiele an:

struct storage_element {
    int position;
    int amount;
    int type;
}

Dieses struct braucht den Speicherplatz für 3 integers. Eventuell sogar mehr, weil structs teilweise Padding einführen, das für den Entwickler nicht sichtbar ist! Ein solches int braucht heutzutage normalerweise 4 bytes. Das sind insgesamt 12 bytes!

Schauen wir uns jetzt im Vergleich dazu eine union an:

union storage_element {
    int position;
    int amount;
    int type;
}

Hier speichert der Compiler die Daten viel kompakter. Diese union benötigt nicht 12, sondern nur 4 bytes an Speicher.

Jetzt ist das bei so kleinen structs und unions noch nicht sehr viel Speicher, aber bei größeren Anwendungen schlägt das extrem aus.

Unions helfen, den Code lesbar zu machen

Unions können verwendet werden, um namespacing in C zu erreichen. C hat bekanntermaßen keine gute Methode um namespacing umzusetzen. Mit unions ist das aber ganz leicht möglich. Hier ein kleines Beispiel:


typedef union {
    int best_variable;
    int important_variable;
    int huge_variable;
} important_variables;

typedef union {
    int useless_variable;
    int small_variable;
    int forgettable_variable;
} less_important_variables;

Wenn dieser Code vorbereitet wurde, kann man Variablen sehr schön beschreiben mit important_variables.best_variable = 5;. Das ist sehr sauber und zeigt sofort auf, zu welchem Namespace die Variable best_variable gehört.

Unions sind gut für Mitarbeiter von Firmen

Unions, im deutschen Gewerkschaften, helfen Mitarbeitenden von Firmen ihre eigenen Rechte gegenüber der Firma durchzusetzen.

Firmen mit Gewerkschaften zahlen ihren Mitarbeitenden im Durchschnitt mehr Geld, kümmern sich mehr um die Gesundheit ihrer Mitarbeitenden und investieren mehr in Fortbildungen und Schulungen.

unions im C Code zu verwenden ist eine einfache und wirksame Methode um das Thema Gewerkschaften aktiv zu halten und die eigene Solidarität zu dem Thema zu beweisen.