C18 problema con dichiarazioni all'interno delle funzioni

12 Anni 1 Mese fa #1 da Nutshell
Salve a tutti, ho da un paio di giorni iniziato a programmare su un pic18f4550. Vengo da un pic16f876 del quale ho imparato a sfruttare tutte le periferiche e ho voluto fare un passo avanti con un pic18. Ma veniamo al dunque: Ho scaricato il manuale di programmazione in c18 di laurtec, e ho iniziato a programmare, ho preso confidenza con interrupts, timers, lcd, eeprom... ora mi blocco davanti a un problema ridicolo: sto facendo un ciclo for dichiarando l'indice all'interno del for [per esempio: for (int i=0; i<10; i++)]... ebbene mi da errore di sintassi! Mettendo la dichiarazione dell'indice fuori dal ciclo [esempio: int i; for in qualche caso ho risolto, mentre in qualche altro l'errore rimane.

Sono il solo ad avere questo problema? Esiste qualche soluzione? Questa cosa mi sta tagliando le gambe, non riesco a fare niente!

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Nutshell
  • Avatar di Nutshell
  • Premium Member
  • Premium Member
Di più
12 Anni 1 Mese fa - 12 Anni 1 Mese fa #2 da StefA
Ciao, ho aperto un progetto funzionante e l'ho cambiato dichiarando all'interno del ciclo for la variabile, anche a me dà erore di sintassi. Ne deduco che la dichiarazione non può essere fatta dentro il ciclo for. Io utilizzo MPLAB e C18, sarà un'altra delle differenze con il C++.
Non vedo come questo possa darti tutti questi problemi, basta dichiarare la variabile del ciclo all'inizio della funzione, se utilizzi sempre la stessa variabile per molti cicli e diverse funzioni puoi anche definirla globale. Ricordati che dopo il for, le istruzioni da eseguire devono essere racchiuse da parentesi graffe. Posta il codice che ti dà errore così possiamo capire meglio.

Ste

..avevano magari fatto lo sgambetto al ka, ma il sangue restava sempre più denso dell'acqua.. [cit.]
Ultima Modifica 12 Anni 1 Mese fa da StefA.
Ringraziano per il messaggio: Nutshell

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #3 da Pinna
Ciao, se dici che in qualche caso hai risolto ed in altri l'errore persiste, mi viene da pensare che il ciclo for lo stia usando in sorgenti diversi o in parti diverse dello stesso sorgente. Poichè l'istruzione è giusta, controlla le righe precedenti o successive a questo ciclo: mplab non è molto preciso nell'indicazione dell'errore e la stessa cosa mi capitò un annetto fa...

Chi vola vale, chi vale vola, chi non vola è un vile
Ringraziano per il messaggio: Nutshell

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Pinna
  • Avatar di Pinna
  • Moderator
  • Moderator
Di più
12 Anni 1 Mese fa #4 da Nutshell
Alla fine ho dichiarato una variabile "indexfor" all'inizio del programma e poi l'ho usata come indice ad ogni ciclo. Così funziona.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Nutshell
  • Avatar di Nutshell
  • Premium Member
  • Premium Member
Di più
12 Anni 1 Mese fa #5 da Mauro Laurenti
Ciao,

il fatto che funzioni non deve pero' essere visto come un "workaround".
La necessita' di dichiarare la variabile fuori dal for e subito dopo il main (o fuori se globale), discende dallo standard ANSI C.
Il C++ accetta la dichiarazione della variabile anche nel for e alcuni compilatori C hanno preso questa funzione non standard per il C, per cui e' meglio non usarla.

C'era una discussione di includere tale possibilita' anche nel C ma non sono certo che sia stato fatto.

Saluti,

Mauro
Ringraziano per il messaggio: Nutshell

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login