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.


Anmelden zum Antworten