direttiva di #line (C/C++)

#line la direttiva indica al preprocessore di modificare il numero di riga internamente archiviato e il nome file del compilatore a un numero di riga e un nome file specificati.

#line digit-sequence ["filename"]

Note

Il compilatore utilizza il numero di riga e il nome file facoltativo per fare riferimento agli errori rilevati durante la compilazione.Il numero di riga in genere si riferisce alla riga di input corrente e il nome file fa riferimento all'archivio di input corrente.Il numero di riga viene incrementato dopo ogni riga viene elaborata.

cifra-sequenza il valore può essere una costante Integer.La macro sostituzione è possibile eseguire sui token di pre-elaborazione, ma il risultato necessario valutare la sintassi corretta. nome file può essere qualsiasi combinazione di caratteri e deve essere racchiusa tra virgolette doppie (““).se nome file viene omesso, il nome file precedente rimane invariato.

È possibile modificarne il numero e il nome file della riga di codice sorgente scrivendo un oggetto #line direttiva.Il convertitore viene utilizzato il numero di riga e nome file per determinare i valori delle macro predefinite __FILE e __LINE.È possibile utilizzare queste macro per inserire i messaggi di errore auto-descrittivi nel testo di programma.per ulteriori informazioni su queste macro predefinite, vedere macro predefinite.

__FILE la macro si genera una stringa il cui contenuto è il nome file, racchiuso tra virgolette doppie ( ““).

Se si modifica il numero di riga e il nome file, il compilatore ignora i valori precedenti e continuare l'elaborazione con i nuovi valori.#line la direttiva in genere utilizzata dai generatori di programmi per visualizzare i messaggi di errore a fare riferimento al file di origine originale anziché al programma generato.

Negli esempi seguenti vengono illustrati #line e __LINE e __FILE macro.

In questa istruzione, il numero di riga internamente archiviato è impostato su 151 e il nome file viene modificato in copy.c.

#line 151 "copy.c"

in questo esempio, la macro ASSERT utilizza le macro predefinite __LINE e __FILE per visualizzare un messaggio di errore sul file di origine se “un'asserzione„ specificata non è true.

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

Vedere anche

Riferimenti

Direttive per il preprocessore