Filename and line information
Cambia el número de línea del código fuente y, opcionalmente, el nombre del archivo actual, en el preprocesador.
Contenidos |
Sintaxis
#line
lineno
|
(1) | ||||||||
#line
lineno
"
filename
"
|
(2) | ||||||||
Explicación
1) Cambia el número de línea actual del preprocesador a lineno . Las expansiones de la macro __LINE__ más allá de este punto se expandirán a lineno más el número de líneas de código fuente reales encontradas desde entonces.
2) También cambia el nombre del archivo de preprocesador actual a filename . Las expansiones de la macro __FILE__ a partir de este punto producirán filename .
Cualquier token de preprocesamiento (constantes de macro o expresiones) está permitido como argumento para #line siempre que se expandan a un entero decimal válido opcionalmente seguido de una cadena de caracteres válida.
lineno
debe ser una secuencia de al menos un dígito decimal (el programa está mal formado en caso contrario) y siempre se interpreta como decimal (incluso si comienza con
0
).
Si
lineno
es
0
o mayor que
32767
(until C++11)
2147483647
(since C++11)
, el comportamiento es indefinido.
Notas
Esta directiva es utilizada por algunas herramientas automáticas de generación de código que producen archivos fuente C++ a partir de un archivo escrito en otro lenguaje. En ese caso, #line las directivas pueden insertarse en el archivo C++ generado haciendo referencia a los números de línea y al nombre del archivo del código fuente original (editable por humanos).
Ejemplo
#include <cassert> #define FNAME "test.cc" int main() { #line 777 FNAME assert(2+2 == 5); }
Salida posible:
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
Referencias
- Estándar C++23 (ISO/IEC 14882:2024):
-
- 15.7 Control de línea [cpp.line]
- Estándar C++20 (ISO/IEC 14882:2020):
-
- 15.7 Control de línea [cpp.line]
- Estándar C++17 (ISO/IEC 14882:2017):
-
- 19.4 Control de línea [cpp.line]
- Estándar C++14 (ISO/IEC 14882:2014):
-
- 16.4 Control de línea [cpp.line]
- Estándar C++11 (ISO/IEC 14882:2011):
-
- 16.4 Control de línea [cpp.line]
- Estándar C++98 (ISO/IEC 14882:1998):
-
- 16.4 Control de línea [cpp.line]
Véase también
|
(C++20)
|
una clase que representa información sobre el código fuente, como nombres de archivo, números de línea y nombres de función
(clase) |
|
Documentación de C
para
Información de nombre de archivo y línea
|
|