Go Down

Topic: #line (Read 101 times) previous topic - next topic

savoriano

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

gpb01

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

Guglielmo

P.S.: è una direttiva che NON ho mai usato in vita mia :D :D :D
Search is Your friend ... or I am Your enemy !

fabpolli

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 è
Code: [Select]

#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:
Code: [Select]

#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

savoriano

Quote
Sono alla linea 4
Perché 4?
Sono in cerca di un lavoro!!

fabpolli

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

savoriano

#5
Apr 16, 2020, 05:49 pm Last Edit: Apr 16, 2020, 05:53 pm by savoriano
Io conto 6! Oppure 5 partendo da 0 ??
Quote
__LINE__, __FILE__
Dove posso trovare la lista di queste variabili di sistema?
Sono in cerca di un lavoro!!

fabpolli

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

Go Up