enum oder define?
-
Hi,
ich arbeite derzeit an einem größeren Projekt und stehe vor folgendem Problem:
Ich benötige für eine große Anzahl von Objekten eine eindeutige ID, die von Werten und dem Typen des Objekts abhängt. Derzeit sieht das so aus:typedef unsigned long SoRID; #define ES_CALC1 10001 #define ES_CALC2 10002 // usw. //Mir persönlich gefällt diese Lösung nicht wirklich. Daher habe ich mir folgendes überlegt:
enum SoRID { ES_CALC1 = 10001, ES_CALC2 = 10002, // usw. // }Was für Argumente gibt es für bzw. gegen die beiden Vorschläge? Wie sieht es mit der Performance aus?
Und: Gibt es Alternativen?mfg Kenrik
-
Dafür: Sauber und Typsicher
Dagegen: Nichts (imho)
Performance: Enums sind für den Compiler genauso konstant wie durch den Präprozessor ersetzte ZahlenwerteAlternative: const int (aber ältere C++ Compiler sehen diese u.U. nicht als Compiletime-Konstanten an)
EDIT:
Ob das mit dem älteren Compiler auf Dich zutrifft, kannst Du am Besten mit folgendem Schnippsel überprüfen:const int xyz = 100; int array[xyz];Ein "älterer" Compiler wird Dir um die Ohren hauen dass xyz nicht compiletime-konstant ist. Schalte aber die Spracherweiterungen des Compilers ab, denn der G++ erlaubt z.B. Arrays variabler Länge (wenn auch imho nicht auf globaler Ebene)