Filename and line information
Ändert die Zeilennummer des Quellcodes und optional den aktuellen Dateinamen im Präprozessor.
Inhaltsverzeichnis |
Syntax
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
Erklärung
1) Ändert die aktuelle Präprozessor-Zeilennummer zu lineno . Erweiterungen des Makros __LINE__ nach diesem Punkt werden zu lineno plus der Anzahl der tatsächlich seitdem angetroffenen Quellcode-Zeilen erweitert.
2) Ändert auch den aktuellen Präprozessor-Dateinamen zu filename . Erweiterungen des Makros __FILE__ ab diesem Punkt werden filename erzeugen.
Jede Präprozessor-Token (Makrokonstanten oder Ausdrücke) sind als Argumente für #line zulässig, solange sie zu einer gültigen dezimalen Ganzzahl erweitert werden, der optional eine gültige Zeichenkette folgt.
lineno
muss eine Folge von mindestens einer Dezimalziffer sein (das Programm ist andernfalls fehlerhaft) und wird stets als Dezimalzahl interpretiert (selbst wenn es mit
0
beginnt).
Wenn
lineno
gleich
0
oder größer als
32767
(bis C++11)
2147483647
(seit C++11)
ist, ist das Verhalten undefiniert.
Hinweise
Diese Direktive wird von einigen automatischen Codegenerierungswerkzeugen verwendet, die C++-Quelldateien aus einer in einer anderen Sprache geschriebenen Datei erzeugen. In diesem Fall können #line Direktiven in die generierte C++-Datei eingefügt werden, die auf Zeilennummern und den Dateinamen der ursprünglichen (durch Menschen bearbeitbaren) Quelldatei verweisen.
Beispiel
#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5); }
Mögliche Ausgabe:
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
Referenzen
- C++23-Standard (ISO/IEC 14882:2024):
-
- 15.7 Zeilensteuerung [cpp.line]
- C++20 Standard (ISO/IEC 14882:2020):
-
- 15.7 Zeilensteuerung [cpp.line]
- C++17-Standard (ISO/IEC 14882:2017):
-
- 19.4 Zeilensteuerung [cpp.line]
- C++14-Standard (ISO/IEC 14882:2014):
-
- 16.4 Zeilensteuerung [cpp.line]
- C++11 Standard (ISO/IEC 14882:2011):
-
- 16.4 Zeilensteuerung [cpp.line]
- C++98-Standard (ISO/IEC 14882:1998):
-
- 16.4 Zeilensteuerung [cpp.line]
Siehe auch
|
(C++20)
|
eine Klasse, die Informationen über den Quellcode repräsentiert, wie Dateinamen, Zeilennummern und Funktionsnamen
(Klasse) |
|
C-Dokumentation
für
Dateinamen- und Zeileninformationen
|
|