#line

Sto leggendo "The C Preprocessor" che Guglielmo gentilmente ( e lo ringrazio ) mi ha passato.
Non riesco a capile Line Control!! :confused:
Qualcuno mi può' fare un esempio concreto sull'utilizzazione di #line ?

Credo che con l'IDE di Arduino nenache puoi usarla perché con gli #include fa come gli pare .... comunque prova a leggere QUI ... ::slight_smile:

Guglielmo

P.S.: è una direttiva che NON ho mai usato in vita mia :smiley: :smiley: :smiley:

Da quel ch io sappia si limita ad alterare il contenuto di FILE e LINE e credo il suo utilizzo serva solo se si utilizzano sistemi di creazione/manutenzione del codice che fondono vari file in un unico programma, con la direttiva si cambia linea e file in modo da permettere, in caso d'errore, di capire più facilmente dove intervenire.
Se ad esempio il main.c è

#include <stdio.h>

int main(void)
{
  printf("Sono alla linea: %d; del file %s\n", __LINE__, __FILE__);
}

Verrà stampato Sono alla linea 4 del file main.c
ma se main.c è creato dalla fuzione di alri file diventerebbe difficile capire che l'istruzione in errore (nell'esempio rappresentata dalla printf) è in un determinato file ad una certa posizione, quindi facendo:

#include <stdio.h>

int main(void)
{
  #line 70 "altro.c"
  printf("Sono alla linea: %d; del file %s\n", __LINE__, __FILE__);
}

Verrà stampato Sono alla linea 71 del file altro.c

Uso limitatissimo insomma, almeno da quel che ho capito io
Verrà stam

Sono alla linea 4

Perché 4?

perché è la quarta partendo dall'inizio del file :slight_smile:

Io conto 6! Oppure 5 partendo da 0 ??

LINE, FILE

Dove posso trovare la lista di queste variabili di sistema?

parte da uno e le righe vuote non contano, credo di ricordae così... non è che ho provato, pensavo si capisse cmunque il senso al di la di 3,4,5. Nel primo caso stampa un valore e un nome di file, con la direttiva stampa una linea che ovviamene non potebbe essere (70) di un file che si chiama differentemente