Forum: Mikrocontroller und Digitale Elektronik ST Visual Develop - Variable außerhalb main()-loop deklarieren


von Max M. (maxmicr)


Lesenswert?

Hallo,

ich möchte gerne bei jedem 2. Durchlauf der Hauptschleife eine Funktion 
ausführen. Dafür zähle ich eine Variable hoch und überprüfe dann bei 
jeden Durchlauf ob:
1
(i%2)
Dafür muss ich die Variable außerhalb der while-Schleife deklarieren, da 
sie sonst bei jedem Durchlauf überschrieben wird, leider mag das mein 
Compiler (COSMIC STM8) anscheinend nicht :(
1
uint16_t i = 0;
2
do{
3
  if(i%2){
4
    selfTest();
5
  }
6
  i++;
7
}while(1);

Fehlermeldung:

misplaced local declaration in der Zeile in der
1
uint16_t i = 0
 steht.

Jemand eine Idee, wie ich das umgehen kann oder ist das der Preis, den 
man für einen kostenlosen Compiler zahlen muss?

: Bearbeitet durch User
von Peter II (Gast)


Lesenswert?

Max M. schrieb:
> Jemand eine Idee, wie ich das umgehen kann oder ist das der Preis, den
> man für einen kostenlosen Compiler zahlen muss?

vermutlich ist es ein C Compiler und bei C ( vor c99) muss man Variablen 
am Anfang vom Block deklarieren.

Vermutlich hast du vor dem

uint16_t i = 0;

noch weiteren code stehen. Man könnte sie auch static machen, dann kann 
sie innerhalb der schleife bleiben.

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Ganz genau so ist es beim Cosmic Compiler, also kannst du Variablen nur 
nach einer geschweiften Klammer auf deklarieren.

von Max M. (maxmicr)


Lesenswert?

Okay, vielen Dank für die schnellen Antworten!

von honk (Gast)


Lesenswert?

static ist dein Freund

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.