const int vs. #define vs. enum
-
Hi,
was würdet ihr bevorzugen?
#define GS_MAINMENU 1 #define GS_INTRO 2 #define GS_OUTRO 3 // oder const int GS_MAINMENU = 1; const int GS_INTRO = 2; const int GS_OUTRO = 3; // oder enum GAMESTATE_TYPE { MAINMENU = 1, INTRO = 2, OUTRO = 3 };
was würden die Profis benutzen und wieso? Was hat vorteile und was nachteile?
-
Ich würde enum verwenden.
Zwar beissen sich die Bezeichner dennoch aber Compiler das hier mal:
#include <iostream> using namespace std; enum a{a_1,a_2,a_3}; enum b{b_1,b_2,b_3}; void foo( a) { cout<<"a"; } void foo( b) { cout<<"b"; } void bar(a){} int main() { foo(a_1); foo(b_1); bar(b_1); }
Danach nehm mal bar raus und probier es aus
Wenn das aber zu aufwendig wird die const variante.
#define garnicht da hier die typprüfung verloren geht
-
btw. anstelle des GS_-Prefix solltest du namespaces benutzen.
Effektiv-C++ wär glaube ich das ideale Buch für dich, weil da genau so feinheiten behandelt werden, die auftretten, wenn man die C++ Anfangs Phase überwindet.
-
kingruedi schrieb:
btw. anstelle des GS_-Prefix solltest du namespaces benutzen.
Effektiv-C++ wär glaube ich das ideale Buch für dich, weil da genau so feinheiten behandelt werden, die auftretten, wenn man die C++ Anfangs Phase überwindet.
Für sowas ist "Die C++ Programmiersprache" wohl am besten!
-
nein, "Die C++-Programmiersprache" geht nicht auf solche Themen und Kniffe ein, sondern ist eher eine Vorstellung von C++ und den verwendeten Konzepten.