#line Direktive (C/C++)
Die #line-Direktiven geben den Präprozessor an, der gespeicherte die Zeilennummer und den Dateinamen Compilers intern zu einer bestimmten Zeilennummer und einem Dateinamen zu ändern.
#line digit-sequence ["filename"]
Hinweise
Der Compiler verwendet die Zeilennummer und den optionalen Dateinamen, um den Fehler zu beheben, die er während der Kompilierung gesucht werden soll.Die Zeilennummer in der Regel bezieht sich auf die aktuelle Eingabezeile an, und der Dateiname verweist die aktuelle Eingabedatei an.Die Zeilennummer wird erhöht, nachdem die einzelnen Zeilen verarbeitet wird.
Der Ziffer Sequenz-Wert kann eine ganzzahlige Konstante sein.Makro Ersetzung kann auf dem Vorverarbeitungs token durchgeführt werden, aber das Ergebnis muss zur richtigen Syntax ausgewertet werden.Der Dateiname kann jede Kombination von Zeichen sein und muss in doppelte Anführungszeichen („„) eingeschlossen werden.Wenn der Dateiname nicht angegeben wird, wird der vorherige Dateiname nicht geändert.
Sie können die Quellzeilen Nummer und Dateinamen ändern, indem Sie #line-Direktiven schreiben.Die Übersetzung wird die Zeilennummer und den Dateinamen, um die Werte der vordefinierten Makro __FILE und __LINEzu bestimmen.Sie können diese Makros verwenden, um SELF-beschreibende Fehlermeldungen in dem Programmtext eingefügt werden soll.Weitere Informationen zu diesen vordefinierten Makros finden Sie unter Vordefinierte Makros.
Das __FILE Makro erweitert zu einer Zeichenfolge, deren Inhalt der Datei befinden, umgeben von doppelten Anführungszeichen („„).
Wenn Sie die Zeilennummer und den Dateinamen ändern, ignoriert der Compiler die vorherigen Werte und setzt die Verarbeitung fort mit den neuen Werten.Die #line-Direktive wird in der Regel vom Programm generatoren verwendet, um Fehlermeldungen dass die ursprüngliche Quelldatei statt dem generierten Programm zu verweisen.
In den folgenden Beispielen werden #line und die __LINE und __FILE Makros.
In dieser Anweisung wird die intern gespeicherte Zeilennummer auf 151 festgelegt, und der Dateiname wird auf copy.cgeändert.
#line 151 "copy.c"
In diesem Beispiel wird Makro- ASSERT die vordefinierten Makro __LINE und __FILE , um eine Fehlermeldung zur Quelldatei zu drucken, wenn eine angegebene „Assert“ nicht erfüllt ist.
#define ASSERT(cond)
if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}