Nombre de archivo e información de línea
Cambia el número de línea actual y el nombre del archivo en el preprocesador.
Sintaxis
#line no-de-linea
|
(1) | ||||||||
#line no-de-linea "nombre-del-archivo"
|
(2) | ||||||||
Explicación
__LINE__ más allá de este punto se expandirán al no-de-linea más el número de líneas de código fuente reales encontradas desde entonces.__FILE__ más allá de este punto producirán nombre-de-archivo.Cualquier token de preprocesamiento (constantes o expresiones de macro) se permite como argumentos a #line siempre y cuando se expandan hasta un entero decimal válido seguidos opcionalmente de una cadena de caracteres válida.
El no-de-linea debe ser una secuencia de al menos un dígito decimal (de lo contrario, el programa está mal formado) y siempre se interpreta como decimal (incluso si comienza con 0).
Si el no-de-linea es 0 o mayor que 32767 (hasta C99)2147483647 (desde C99), el comportamiento sera indefinido.
Observaciones
Esta directiva es utilizada por algunas herramientas de generación automática de código que producen archivos fuente C a partir de un archivo escrito en otro idioma. En ese caso, las directivas #line pueden insertarse en el archivo C generado haciendo referencia a los números de línea y al nombre de archivo del archivo fuente original (editable por el ser humano).
El número de línea que sigue a la directiva #line __LINE__ está definido por la implementación (hay dos valores posibles a los que __LINE__ puede expandirse en este caso: el número de líneas finales vistas hasta ahora, o el número de líneas finales vistas hasta ahora más la línea final que termina la directiva #line).
Ejemplo
#include <assert.h>
#define FNAME "test.c"
int main(void)
{
#line 777 FNAME
assert(2+2 == 5);
}
Posible salida:
test: test.c:777: int main(): Assertion `2+2 == 5' failed.
Referencias
- Standard C11 (ISO/IEC 9899:2011):
- 6.10.4 Line control (p: 173)
- Standard C99 (ISO/IEC 9899:1999):
- 6.10.4 Line control (p: 158)
- Standard C89/C90 (ISO/IEC 9899:1990):
- 3.8.4 Line control
Véase también
Documentación de C++ para Nombre de archivo e información de línea
|