Datos sobre macros y preprocesadores en C
Datos sobre macros y preprocesadores en C
En un programa en C, todas las lĂneas que comienzan con # son procesadas por el preprocesador, que es un programa especial invocado por el compilador. En un tĂ©rmino muy básico, el preprocesador toma un programa C y produce otro programa C sin ningĂşn # .
Los siguientes son algunos datos interesantes sobre los preprocesadores en C.
1) Cuando usamos la directiva include , los contenidos del archivo de encabezado incluido (después del preprocesamiento) se copian en el archivo actual.
Los corchetes angulares < y > indican al preprocesador que busque en la carpeta estándar donde se encuentran todos los archivos de encabezado. Las comillas dobles " y " indican al preprocesador que busque en la carpeta actual (directorio actual).
2) Cuando usamos define para una constante, el preprocesador produce un programa en C donde se busca la constante definida y los tokens coincidentes se reemplazan con la expresiĂłn dada. Por ejemplo en el siguiente programamax se define como 100.
1) Cuando usamos la directiva include , los contenidos del archivo de encabezado incluido (después del preprocesamiento) se copian en el archivo actual.
Los corchetes angulares < y > indican al preprocesador que busque en la carpeta estándar donde se encuentran todos los archivos de encabezado. Las comillas dobles " y " indican al preprocesador que busque en la carpeta actual (directorio actual).
2) Cuando usamos define para una constante, el preprocesador produce un programa en C donde se busca la constante definida y los tokens coincidentes se reemplazan con la expresiĂłn dada. Por ejemplo en el siguiente programamax se define como 100.
4) Los argumentos macro no se evalĂşan antes de la expansiĂłn macro. Por ejemplo, considere el siguiente programa
El problema anterior se puede resolver usando el siguiente programa
5) Los tokens pasados ​​a las macros se pueden concatenar usando el operador ## llamado operador Token-Pasting.
6) Un token pasado a macro se puede convertir en un literal de cadena usando # antes.
7) Las macros se pueden escribir en varias lĂneas usando '\'. La Ăşltima lĂnea no necesita tener '\'.
8) Las macros con argumentos deben evitarse ya que a veces causan problemas. Y las funciones en lĂnea deben preferirse ya que hay una evaluaciĂłn de parámetros de verificaciĂłn de tipo en las funciones en lĂnea. A partir de C99 , las funciones en lĂnea tambiĂ©n son compatibles con el lenguaje C.
Por ejemplo, considere el siguiente programa. Desde el primer vistazo, la salida parece ser 1, pero produce 36 como salida.
Por ejemplo, considere el siguiente programa. Desde el primer vistazo, la salida parece ser 1, pero produce 36 como salida.
Si usamos funciones en lĂnea, obtenemos el resultado esperado. TambiĂ©n el programa dado en el punto 4 anterior puede corregirse utilizando funciones en lĂnea.
9) Los preprocesadores también admiten directivas if-else que generalmente se usan para la compilación condicional.
10) Se puede incluir un archivo de encabezado más de una vez directa o indirectamente, esto lleva a problemas de redeclaración de las mismas variables / funciones. Para evitar este problema, como las directivas definidas , ifdef y ifndef se utilizan.
11) Hay algunas macros estándar que se pueden usar para imprimir el archivo de programa (__FILE__), la fecha de compilaciĂłn (__DATE__), la hora de compilaciĂłn (__TIME__) y el nĂşmero de lĂnea en el cĂłdigo C (__LINE__)
11) Hay algunas macros estándar que se pueden usar para imprimir el archivo de programa (__FILE__), la fecha de compilaciĂłn (__DATE__), la hora de compilaciĂłn (__TIME__) y el nĂşmero de lĂnea en el cĂłdigo C (__LINE__)
12) Podemos eliminar macros ya definidas usando:
#undef MACRO_NAME
#undef MACRO_NAME
El siguiente programa se ejecuta correctamente ya que hemos declarado LIMIT como una variable entera después de eliminar la macro LIMIT definida previamente
Otro hecho interesante sobre el uso de macro ( #undef )
Post Comment
No hay comentarios.