Directiva #line (C/C++)

La directiva de #line indica el preprocesador que cambie el número de línea internamente almacenado y el nombre de archivo del compilador en un número de línea y un nombre de archivo especificados.

#line digit-sequence ["filename"]

Comentarios

El compilador utiliza el número de línea y el nombre de archivo opcional para hacer referencia a los errores que encuentra durante la compilación.El número de línea suele a la linea de entrada actual, y el nombre de archivo hace referencia al archivo de entrada actual.se incrementa el número de línea después de que se procese cada línea.

el valor de la dígito- secuencia puede ser cualquier constante entera.El reemplazo macro se pueden realizar en los tokens de preprocesamiento, pero el resultado debería evaluar la sintaxis correcta.El nombre de archivo puede ser cualquier combinación de caracteres y se debe agregar entre comillas (““).Si se omite el nombre de archivo , permanece el nombre de archivo anterior sin modificar.

Puede modificar el número y el nombre de archivo de código fuente escribiendo una directiva de #line .el traductor utiliza el número de línea y el nombre de archivo para determinar los valores de las macros predefinidas __FILE y __line__.Puede utilizar estas macros insertar mensajes de error uno mismo-descriptivos en el texto de programa.Para obtener más información sobre estas macros predefinidas, vea macros predefinidas.

La macro de __FILE se expande a una cadena cuyo contenido es el nombre de archivo, entre comillas (““).

Si cambia el número de línea y el nombre de archivo, el compilador omite los valores anteriores y continúa procesando con los nuevos valores.La directiva de #line utiliza normalmente los generadores de programa para hacer mensajes de error para hacer referencia al archivo de código fuente original en lugar de al programa generado.

Los ejemplos siguientes muestran #line y macros de __line__ y de __FILE .

En esta instrucción, el número de línea internamente almacenado se establece en 151 y el nombre de archivo se cambia copy.c.

#line 151 "copy.c"

En este ejemplo, ASSERT macro utiliza las macros predefinidas __line__ y __FILE para imprimir un mensaje de error sobre el archivo de código fuente si una “aserción especificada” no es true.

#define ASSERT(cond)

if( !(cond) )\
{printf( "assertion error line %d, file(%s)\n", \
__LINE__, __FILE__ );}

Vea también

Referencia

Directivas de preprocesador