Lokale Funktionen in C/C++ ISO spezifiziert



  • -Lokale structs mit statischen Methoden:

    int main()
    {
       struct Foo
       {
          static void Bar()
          {
    
          }
       }
       Foo::Bar();
    }
    

    -Globale Funktionen mit lokaler Deklaration:
    Ich denke mal, dass das gemeint ist:

    namespace
    {
       void Bar(){}
    }
    
    int main()
    {
       Bar();
    }
    


  • Ich finde das hier irgendwie ganz schick.

    #include <iostream>
    
    int main()
    {
        using std::cout;
        struct
        {
            int operator()(int i) // edit: http://www.c-plusplus.net/forum/294092
            {
                return i*i;
            }
        }square;
    
        cout << square(5); // square ist nun sozusagen deine lokale Funktion.
    }
    


  • Q schrieb:

    -Globale Funktionen mit lokaler Deklaration:
    Ich denke mal, dass das gemeint ist:

    namespace
    {
       void Bar(){}
    }
    
    int main()
    {
       Bar();
    }
    

    nein, ich glaube eher er meint sowas:

    int main()
    {
        void foo(int);
    
        foo(5);
    
        return 0x0;
    }
    
    void foo(int i)
    {
        // ...
    }
    


  • Skym0sh0 schrieb:

    Q schrieb:

    -Globale Funktionen mit lokaler Deklaration:
    Ich denke mal, dass das gemeint ist:

    namespace
    {
       void Bar(){}
    }
    
    int main()
    {
       Bar();
    }
    

    nein, ich glaube eher er meint sowas:

    int main()
    {
        void foo(int);
    
        foo(5);
    
        return 0x0;
    }
    
    void foo(int i)
    {
        // ...
    }
    

    Das ist ja furchtbar!



  • das ist ne andere sache

    du hat danach gefragt...



  • Skym0sh0 schrieb:

    das ist ne andere sache

    du hat danach gefragt...

    Ja stimmt. Bin Dir auch dankbar dafür!



  • Anaconda55 schrieb:

    Skym0sh0 schrieb:

    Q schrieb:

    -Globale Funktionen mit lokaler Deklaration:
    Ich denke mal, dass das gemeint ist:

    namespace
    {
       void Bar(){}
    }
    
    int main()
    {
       Bar();
    }
    

    nein, ich glaube eher er meint sowas:

    int main()
    {
        void foo(int);
    
        foo(5);
    
        return 0x0;
    }
    
    void foo(int i)
    {
        // ...
    }
    

    Das ist ja furchtbar!

    was ist jetzt daran so furchtbar.
    Ich glaube wenn es so viele verschiedene ansätze gibt , solltest du deine Frage neu formulieren



  • 7xCore schrieb:

    Anaconda55 schrieb:

    Skym0sh0 schrieb:

    Q schrieb:

    -Globale Funktionen mit lokaler Deklaration:
    Ich denke mal, dass das gemeint ist:

    namespace
    {
       void Bar(){}
    }
    
    int main()
    {
       Bar();
    }
    

    nein, ich glaube eher er meint sowas:

    int main()
    {
        void foo(int);
    
        foo(5);
    
        return 0x0;
    }
    
    void foo(int i)
    {
        // ...
    }
    

    Das ist ja furchtbar!

    was ist jetzt daran so furchtbar.
    Ich glaube wenn es so viele verschiedene ansätze gibt , solltest du deine Frage neu formulieren

    Ich finde es sehr unübersichtlich.



  • Anaconda55 schrieb:

    Ich finde es sehr unübersichtlich.

    Und welche Alternative findest du nun annehmbar?



  • Lambda-Ausdrücke finde ich gut.
    Meine Frage war allerdings nur wegen den lokalen Funktionen, aber diese Frage wurde ja bereits beantwortet.



  • Preisfrage: Woran erkennt man dass das Design Kacke ist? 🙄


Anmelden zum Antworten