Laufzeit Frage



  • Hallo eine Frage zu der Laufzeit eines programmes auf einem Mikrocontroler.
    Was führt zu einer längeren laufzeit wenn ich eine satic varibale lokal für eine Funktion anlege oder global?



  • global ist tendenziell billiger, denn der compiler muß nicht code erzeugen, der zur laufzeit testet, ob es der erste funktionsdurchlauf ist. meistens kann er den code aber auch wegoptimieren, dann isses egal, und das passiert vermutlich genau dann, wenn du dir freie wahl hast ob global oder static lokal.
    War alles falsch.


  • Mod

    volkard schrieb:

    global ist tendenziell billiger, denn der compiler muß nicht code erzeugen, der zur laufzeit testet, ob es der erste funktionsdurchlauf ist.

    Muss er in C doch sowieso nicht, da es keine dynamische Initialisierung gibt?



  • void foo()
    {
       static char* mem=malloc(1024);
       read_it(mem);
       write_it(mem);
    }
    

    ist verböten?


  • Mod

    volkard schrieb:

    void foo()
    {
       static char* mem=malloc(1024);
       read_it(mem);
       write_it(mem);
    }
    

    ist verböten?

    Ich glaube schon (6.7.8/4)

    All the expressions in an initializer for an object that has static storage duration shall be constant expressions or string literals.



  • Jup. Wieder was gelernt.
    gcc sagt auch
    error: initializer element is not constant
    sobald static da steht.


Anmelden zum Antworten