ST Visual Develop - Variable außerhalb main()-loop deklarieren

OP #4562616
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?
Gast #4562624
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.