Preprocesado

El preprocesado es una fase que comparten algunos lenguajes de programación, anterior a la fase de compilación propiamente dicha. Se aplica generalmente sobre el archivo principal que contiene el código fuente.

La función principal de los preprocesadores es hacer inteligible para el compilador el código fuente, cambiando las directivas de preprocesamiento por valores para el compilador. Estas directivas siempre están señaladas por caracteres especial para que solo sean modificadas por el preprocesador, en el caso del preprocesador de C estas directivas comienzan con "#". Algunos preprocesadores incluso permiten algún tipo de lógica o evaluación muy básica en su gramática.

Otra parte muy importante de los preprocesadores, son los macros, estos están presentes en la mayoría pero algunos no tienen esa capacidad, las macros en C son funciones muy cortas de reemplazo de texto (esto las hace muy inestables y se recomienda no usarlas, ya que el texto que se reemplaza podría generar algún error). En otros lenguajes de programación, las macros son funciones que reciben nodos ast y retornan nodos ast, donde los nodos de ast son instrucciones para el compilador. (cuando se compila un programa, se genera un árbol de expresión, donde cada nodo corresponde a una instrucción, de ahí el nombre "Árbol de sintaxis abstracta" o en inglés "Abstract Sintax Tree" que se abrevia ast)

Ejemplo:

#DEFINE SUMA(X,Y) (X+Y)

Lo que hace este macro es reemplazar las variables x,y por lo que le indiquemos. Ejemplo:

int s = SUMA(2,3);

Después del preprocesamiento el código queda:

int s = (2+3)

Finalmente el compilador hace la verdadera suma, ya que las macros no se podrían considerar por verdaderas funciones, porque solo remplazan valores.

En realidad este macro es inútil, pero es una buena forma de explicar los macros.

Estos ejemplos de macros se basan en el preprocesador de C, pueden variar con otros preprocesadores

Algunos otros preprocesadores son capaces de comprobar errores de sintaxis en el código antes de pasar a la etapa de compilación, incluso detectar dependencias con otros archivos para evitar muchos problemas.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.