c - tiene - programar en linea
¿Cuál es el significado de#line en lenguaje C? (6)
¿Cuál es el significado de #line
en el lenguaje C ? ¿Dónde se usaría?
# es el símbolo de inserción de cadena en el procesador c y c ++
Es una palabra clave pragma :
" #line le permite modificar el número de línea del compilador y (opcionalmente) la salida del nombre del archivo para errores y advertencias. Este ejemplo muestra cómo informar dos advertencias asociadas con los números de línea. La directiva #line 200 obliga a que el número de línea sea 200 (aunque el valor predeterminado es # 7) y hasta la próxima directiva #line, el nombre del archivo se informará como "Especial". La directiva predeterminada #line devuelve la numeración de las líneas a su numeración predeterminada, que cuenta las líneas que fueron renumeradas por la directiva anterior. "
Le dice al compilador de dónde viene la siguiente línea. Por lo general, solo el preprocesador de C agrega estos, por ejemplo, cuando se incluye un archivo, le dice al compilador (que básicamente solo está viendo un flujo de datos) que estamos viendo un archivo diferente.
Esto puede sonar extraño, pero el preprocesador simplemente inserta los archivos de encabezado en los que especifica sus inclusiones, y el compilador funciona en conjunto (todos los archivos de encabezado concatenados junto con su código fuente), puede verificar el resultado de la etapa del preprocesador si lo usa gcc con gcc -E myfile.c
. Ahí notará que agrega una directiva #line
cada vez que incluye archivos, y también cada vez que reduce la cantidad de texto que se envía al compilador (por ejemplo, grandes cantidades de comentarios pueden reducirse a una única directiva #line
, saltándose hacia adelante)
También es usado por otros programas, como bison / yacc para decirle que el problema (si hay un problema de compilación) está relacionado con su archivo de reglas en una línea específica, que el compilador de otra manera no podría resolver, como bison / yacc genera c-archivos.
Le permite cambiar el número de línea aparente del archivo.
El único uso que se me ocurre es hacer que los números de línea sean sensatos después de una larga serie de macros multilínea.
el uso es:
#line 42
Se llama la directiva de control de línea del preprocesador .
Las expansiones de __FILE__
y __LINE__
se alteran si se usa una directiva #line
. Hace que el compilador vea el número de línea de la siguiente línea de origen como el número especificado.
Su uso principal es hacer que el compilador proporcione mensajes de error más significativos.
Puede encontrar más explicaciones y un ejemplo de uso en la documentación de IBM .
Se utiliza principalmente para proporcionar los nombres de archivo y los números de línea de un archivo de origen a partir del cual se creó un archivo C (ya sea encabezado o implementación). Dado lo anterior, el compilador emitiría diagnósticos que sugerían el archivo de origen en lugar del archivo generado.
Los preprocesadores también usan esto para insinuar encabezados incluidos en un archivo preprocesado que se ha expandido.