Dateiname und Zeileninformationen
Ändert die Zeilennummer des Quellcodes und optional den aktuellen Dateinamen im Präprozessor.
Inhalt |
[bearbeiten] Syntax
#line lineno |
(1) | ||||||||
#line lineno "filename" |
(2) | ||||||||
[bearbeiten] Erklärung
1) Ändert die aktuelle Präprozessor-Zeilennummer auf lineno. Makroexpansionen von __LINE__ werden von diesem Punkt an lineno plus die Anzahl der seitdem aufgetretenen tatsächlichen Quellcodezeilen ergeben.
2) Ändert auch den aktuellen Präprozessor-Dateinamen auf filename. Makroexpansionen von __FILE__ ergeben von diesem Punkt an filename.
Präprozessor-Tokens (Makrokonstanten oder -ausdrücke) sind als Argumente für #line zulässig, solange sie sich zu einer gültigen Dezimalzahl entwickeln, optional gefolgt von einer gültigen Zeichenkette.
lineno muss eine Sequenz von mindestens einer Dezimalziffer sein (andernfalls ist das Programm fehlerhaft) und wird immer dezimal interpretiert (auch wenn es mit 0 beginnt).
Wenn lineno 0 ist oder größer als 32767(bis C++11)2147483647(seit C++11), ist das Verhalten undefiniert.
[bearbeiten] Hinweise
Diese Direktive wird von einigen automatischen Codegenerierungswerkzeugen verwendet, die C++-Quelldateien aus einer Datei in einer anderen Sprache erstellen. In diesem Fall können #line-Direktiven in die generierte C++-Datei eingefügt werden, die sich auf Zeilennummern und den Dateinamen der ursprünglichen (menschenlesbaren) Quelldatei beziehen.
[bearbeiten] 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.
[bearbeiten] 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]
[bearbeiten] Siehe auch
| (C++20) |
eine Klasse, die Informationen über den Quellcode darstellt, wie z. B. Dateinamen, Zeilennummern und Funktionsnamen (Klasse) |
| C-Dokumentation für Dateiname und Zeileninformationen
| |