Aktion nur einmal ausführen



  • Verschiebe Zeile 39 nach Zeile 17, also "int state;" ausserhab der main anlegen.



  • Andromeda schrieb:

    Verschiebe Zeile 39 nach Zeile 17, also "int state;" ausserhab der main anlegen.

    Das ist Quatsch.

    Es bringt kein anderes Verhalten und es gibt eine (böse) globale Variable.

    Eine zusätzliche Variable old_state könnte hlifreich sein.



  • Wieso nicht einfach

    int main(void) {
    
        int state = 0;
    .
    .
    .
    .
    . 
    
        while(1){
    .
    .
    .
    

    PS. in C müssen Variablendeklarationen in jedem Block VOR allem anderem stehen. In C++ kanns auch mitten drinnen sein.

    Gruß
    Franz



  • DirkB schrieb:

    Eine zusätzliche Variable old_state könnte hlifreich sein.

    Eher eine switch-Anweisung.
    "state" weisst darauf hin, dass er ein State-Machine bauen will.

    int state = 0;
    
    while(1)
    {
       switch (state)
       {
          case 0:
          if (eingang_aktiv())
          {
             mach_was();
             state = 1;
          }
          break;
    
          case 1:
          if (eingang_inaktiv())
          {
             mach_nochwas();
             state = 0;
          }
          break;
       }
    }
    


  • Depp. Klappe halten, wenn man keine Ahnung hat.



  • sd582 schrieb:

    PS. in C müssen Variablendeklarationen in jedem Block VOR allem anderem stehen.

    Seit C99, immerhin auch schon 17 Jahre alt, muss das nicht mehr sein.



  • DirkB schrieb:

    sd582 schrieb:

    PS. in C müssen Variablendeklarationen in jedem Block VOR allem anderem stehen.

    Seit C99, immerhin auch schon 17 Jahre alt, muss das nicht mehr sein.

    Sind noch viele alten Compiler in Gebrauch.
    Ich glaube, noch nicht einmal der C-Compiler von Mickrigweichs "Visual Studio" versteht C99.



  • Depp. Klappe halten, wenn man keine Ahnung hat.



  • Wutz schrieb:

    Depp. Klappe halten, wenn man keine Ahnung hat.

    Was ist denn mit dir los?



  • Lass deine Anfängervermutungen stecken.
    Halt die Klappe, weil du sonst nur Unsinn verbreitest, die andere Leute mit Ahnung nur wieder geradebiegen müssen.



  • Andromeda schrieb:

    Sind noch viele alten Compiler in Gebrauch.
    Ich glaube, noch nicht einmal der C-Compiler von Mickrigweichs "Visual Studio" versteht C99.

    Seit VS-2013 ist es besser geworden. Mit VS-2015 nochmal.

    Auf einem Raspberry wird wohl gcc zum Einsatz kommen. Und der kann C99.
    Da das Programm auch nicht so unter Windows laufen wird, braucht auch keine Rücksicht auf den Mangel von VS genommen werden.



  • Wutz schrieb:

    Lass deine Anfängervermutungen stecken.
    Halt die Klappe, weil du sonst nur Unsinn verbreitest, die andere Leute mit Ahnung nur wieder geradebiegen müssen.

    So entspann dich wieder, lieber Freund.

    In einem Diskussionsforum soll üblicherweise diskutiert werden. Berichtige mich, wenn ich etwas Falsches sage. Aber Pöbeln hilft keinem.



  • Für allen anderen, die deinen "Vermutungen" glauben würden, korrigiere ich deinen Anfängerunsinn entsprechend dem Qualitätsgrad deiner Äußerungen.



  • DirkB schrieb:

    Auf einem Raspberry wird wohl gcc zum Einsatz kommen. Und der kann C99.

    Hat der Threadstarter nicht gesagt, dass er die State-Variable nicht direkt über dem while-block anlegen kann?



  • Wutz schrieb:

    Für allen anderen, die deinen "Vermutungen" glauben würden, korrigiere ich deinen Anfängerunsinn entsprechend dem Qualitätsgrad deiner Äußerungen.

    Dann ist doch alles gut. 🙂



  • Andromeda schrieb:

    DirkB schrieb:

    Auf einem Raspberry wird wohl gcc zum Einsatz kommen. Und der kann C99.

    Hat der Threadstarter nicht gesagt, dass er die State-Variable nicht direkt über dem while-block anlegen kann?

    Ähm... Nö, sagte er nicht.

    patrickloibl schrieb:

    ich würde das gerne nur einmal festlegen am anfang des Codes vor der While schleife aber das nimmt er leider nicht...

    Da steht "am anfang des Codes" und noch eine sehr präzise Fehlerbeschreibung.



  • DirkB schrieb:

    Da steht "am anfang des Codes" ...

    Nicht ganz. Da steht "am anfang des Codes vor der While schleife"
    Und darauf bezog ich mich.

    Btw, es gibt auch Windows für den Raspberry.

    Ich weiss jetzt nicht wie weit das verbreitet ist, aber ich kann mir schon vorstellen, dass dabei der olle Microsoft-Compiler zum Einsatz kommt.


Anmelden zum Antworten