#line-Anweisung
Präprozessordirektive, die die intern gespeicherte Zeilennummer und den Dateinamen des Compilers auf die angegebenen Werte festlegt.
#line lineNumber "filename" |
---|
Parameter
Element | Beschreibung |
---|---|
Linenumber |
Festzulegende Zeilennummer. Dies kann eine beliebige ganzzahlige Konstante sein. Makroersetzung kann für die Vorverarbeitungstoken ausgeführt werden, solange das Ergebnis mit der richtigen Syntax ausgewertet wird. |
filename [optional] |
Dateiname, der festgelegt werden soll. Der Dateiname kann aus einer beliebigen Zeichenkombination bestehen und muss in doppelte Anführungszeichen (" ") eingeschlossen werden. Wenn dieser Parameter ausgelassen wird, bleibt der vorherige Dateiname unverändert. |
Bemerkungen
Der Compiler verwendet die Zeilennummer und den Dateinamen, um auf Fehler zu verweisen, die während der Kompilierung gefunden werden. Die Zeilennummer verweist normalerweise auf die aktuelle Eingabezeile, und der Dateiname verweist auf die aktuelle Eingabedatei. Nach der Verarbeitung jeder Zeile wird die Zeilennummer erhöht. Wenn Sie die Zeilennummer und den Dateinamen ändern, ignoriert der Compiler die vorherigen Werte und setzt die Verarbeitung mit den neuen Werten fort. Die #line-Direktive wird in der Regel von Programmgeneratoren verwendet, um Fehlermeldungen auf die ursprüngliche Quelldatei und nicht auf das generierte Programm zu verweisen.
Das Konvertierungsprogramm verwendet die Zeilennummer und den Dateinamen, um die Werte der vordefinierten Makros __FILE__ und __LINE__ zu bestimmen. Sie können diese Makros verwenden, um selbsterklärende Fehlermeldungen in den Programmtext einzufügen. Das __FILE__-Makro wird in eine Zeichenfolge erweitert, deren Inhalt der Dateiname in doppelten Anführungszeichen (" ") ist.
Beispiele
Im folgenden Beispiel wird die Zeilennummer auf 151 und der Dateiname auf "copy.c" festgelegt.
#line 151 "copy.c"
Im folgenden Beispiel verwendet das Makro ASSERT die vordefinierten Makros __LINE__ und __FILE__, um eine Fehlermeldung zur Quelldatei auszugeben, wenn die angegebene Assertion nicht true ist.
#define ASSERT(cond)
if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}