Información de nombre de archivo y número de línea.
Modifica el nombre de archivo y número de línea actual en el preprocesador.
Sintaxis
#line número-línea
|
(1) | ||||||||
#line número-línea "nombre-archivo"
|
(2) | ||||||||
Explicación
1) Cambia el número de línea actual en el preprocesador por el valor número-línea. Las expansiones de la marco __LINE__ después de este punto, se computará como número-línea más el número de líneas de código fuente posteriores a ese punto.
2) También cambia el nombre del archivo actual en el preprocesador por el valor nombre-archivo. Las expansiones de la macro __FILE__ desde este punto tendrán el valor nombre-archivo.
Cualquier token de preprocesamiento (constantes o expresiones de macro) está permitido como argumentos en #line, siempre y cuando resulten en un entero decimal válido opcionalmente seguido de una cadena de caracteres válida.
número-línea debe ser una secuencia con al menos un dígito decimal (sino el programa es erróneo) y siempre se interpreta como decimal (aunque comience por 0).
Si número-línea tiene un valor 0 o mayor de32767 (hasta C++11)2147483647 (desde C++11), el comportamiento es indeterminado.
Notas
Esta directiva se usa por algunas herramientas de generación automática de código que producen archivos fuente C++ a partir de un archivo escrito en otro lenguaje de programación. En ese caso, las directivas #line se pueden insertar en el archivo C++ generado, donde hacen referencia a los números de línea y al nombre de archivo del fichero fuente original.
Ejemplo
#include <cassert>
#define FNAME "test.cc"
int main()
{
#line 777 FNAME
assert(2+2 == 5);
}
Salida:
test: test.cc:777: int main(): Assertion `2+2 == 5' failed.
Véase también
(C++20) |
Una clase que representa información sobre el código fuente, tales como nombres de archivo, números de línea, y nombres de función. (clase) |
Documentación de C para Información nombre archivo y número línea.
| |