Vorteil von typedef ggü. #define in C++
-
Hallo!
Welchen konkreten Vorteil bringt in dem Fall ein typedef?
#define DatenTyp_VXX DatenTyp_V7
vs.
typedef DatenTyp_V7 DatenTyp_VXX;bzw. gibt es überhaupt einen Vorteil?
-
blablablubb schrieb:
Welchen konkreten Vorteil bringt in dem Fall ein typedef?
- Bessere Fehlermeldungen
- Fehler falls irgendjemand eine Klasse mit dem gleichen Namen definieren will
- Ist echter Name im Namespace
- Google ...
-
#define ist oft scheiße.
Bei typedef wird ein richtiger Name erstellt, mit namespace und allem.
-
Zusätzlich:
Die IDE unterstützt Dich bei #define vermutlich auch nicht mit Anmerkungen zu Methoden und Attributen o.ä.Gibt auch viele Fallstricke:
typedef int* IntPointer; #define DangerousIntPointer int* DangerousIntPointer a, b, c; // nur a ist PointerUnd man man kann Funktionszeiger mit #define nicht gescheit basteln.
Und die Namenskollisionen können ziemliche Probleme bereiten. Wenn man im template beispielsweise
typedef T value_type;durch#define value_type Tersetzt, na dann viel Spaß...
-
Am wichtigsten ist wohl der Scope.
typedeferzeugt ein dem Compiler bekanntes Symbol (im Gegensatz zu reiner Textersetzung) und kann in lokaleren Gültigkeitsbereichen neu definiert werden, ohne Konflikte zu erzeugen.