Filename and line information
Modifie le numéro de ligne du code source et, optionnellement, le nom du fichier courant, dans le préprocesseur.
Table des matières |
Syntaxe
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
Explication
1) Modifie le numéro de ligne actuel du préprocesseur en lineno . Les expansions de la macro __LINE__ au-delà de ce point s'étendront à lineno plus le nombre de lignes de code source réelles rencontrées depuis.
2) Modifie également le nom du fichier de préprocesseur actuel en filename . Les expansions de la macro __FILE__ à partir de ce point produiront filename .
Tous les jetons de prétraitement (constantes de macro ou expressions) sont autorisés comme arguments à #line tant qu'ils se développent en un entier décimal valide suivi optionnellement d'une chaîne de caractères valide.
lineno
doit être une séquence d'au moins un chiffre décimal (le programme est mal formé sinon) et est toujours interprété comme décimal (même s'il commence par
0
).
Si
lineno
est
0
ou supérieur à
32767
(jusqu'en C++11)
2147483647
(depuis C++11)
, le comportement est indéfini.
Notes
Cette directive est utilisée par certains outils de génération automatique de code qui produisent des fichiers source C++ à partir d'un fichier écrit dans un autre langage. Dans ce cas, #line des directives peuvent être insérées dans le fichier C++ généré référençant les numéros de ligne et le nom du fichier source original (modifiable par l'humain).
Exemple
#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5); }
Sortie possible :
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
Références
- Norme C++23 (ISO/CEI 14882:2024) :
-
- 15.7 Contrôle de ligne [cpp.line]
- Norme C++20 (ISO/CEI 14882:2020) :
-
- 15.7 Contrôle de ligne [cpp.line]
- Norme C++17 (ISO/CEI 14882:2017) :
-
- 19.4 Contrôle de ligne [cpp.line]
- Norme C++14 (ISO/CEI 14882:2014) :
-
- 16.4 Contrôle de ligne [cpp.line]
- Norme C++11 (ISO/IEC 14882:2011) :
-
- 16.4 Contrôle de ligne [cpp.line]
- Norme C++98 (ISO/CEI 14882:1998) :
-
- 16.4 Contrôle de ligne [cpp.line]
Voir aussi
|
(C++20)
|
une classe représentant des informations sur le code source, telles que les noms de fichiers, les numéros de ligne et les noms de fonctions
(classe) |
|
Documentation C
pour
Informations sur le nom de fichier et la ligne
|
|