enum oder definieren, welche sollte ich verwenden?

8

enum und #define scheinen das gleiche zu können, für das Beispiel unten, das einen Stil definiert. Verstehen Sie, dass #define eine Makrosubstitution für den Compiler-Präprozessor ist. Gibt es irgendwelche Umstände, in denen man dem anderen vorgezogen wird?

%Vor%

vs

%Vor%     
Gaius Parx 25.06.2010, 21:59
quelle

6 Antworten

11

Verwenden Sie niemals Defines, es sei denn, Sie müssen über Funktionen des Präprozessors verfügen. Für etwas so einfaches wie eine ganzzahlige Aufzählung verwenden Sie eine Aufzählung.

    
Puppy 25.06.2010 22:12
quelle
3

Eine Enum ist am besten, wenn Sie Sicherheit eingeben möchten. Sie werden auch als Symbole exportiert, sodass einige Debugger sie inline anzeigen können, während sie nicht definiert werden können.

Das Hauptproblem bei Enums ist natürlich, dass sie nur ganze Zahlen enthalten können. Für Strings, Floats etc ... können Sie besser mit einem const oder einem define umgehen.

    
kmm 25.06.2010 22:03
quelle
2

Die kurze Antwort ist, dass es wahrscheinlich nicht viel ausmacht. Dieser Artikel bietet eine ziemlich gute lange Antwort:

Ссылка

    
Computerish 25.06.2010 22:06
quelle
1

Wenn es eine integrierte Sprachfunktion gibt, die unterstützt, was Sie tun möchten (in diesem Fall Elemente aufzählen), sollten Sie diese Funktion wahrscheinlich verwenden.

    
BWW 25.06.2010 22:22
quelle
1

Defines sind wahrscheinlich etwas schneller (zur Laufzeit) als Enums, aber der Vorteil ist wahrscheinlich nur eine Handvoll von Zyklen, so dass es vernachlässigbar ist, es sei denn, Sie tun etwas, was das wirklich erfordert. Ich würde mit enum gehen, da die Verwendung des Präprozessors schwieriger zu debuggen ist.

    
Falmarri 25.06.2010 22:17
quelle
0
%Vor%

Mit #define gibt es eine höhere Wahrscheinlichkeit, subtile Bugs einzuführen.

    
Ken A 09.11.2012 15:24
quelle

Tags und Links