Red de conocimiento informático - Conocimiento informático - La diferencia entre macros y funciones y el proceso de compilación y vinculación del lenguaje C

La diferencia entre macros y funciones y el proceso de compilación y vinculación del lenguaje C

Antes de la compilación, las macros deben preprocesarse. Las macros se extraen directamente en el código definido por la macro, que es un reemplazo directo. En otras palabras, después del preprocesamiento, mira el código y descubre que. La definición de macro ha sido reemplazada, verá la cadena de código después de su definición.

En cuanto a las funciones, después de la compilación, hay una serie de procesos para llamar a funciones, como pasar parámetros, insertarlas en la pila, etc. Esta parte la realiza el compilador.

Proceso de compilación y vinculación del lenguaje C:

test.c (código original) --> preprocesamiento --> test.i (preprocesado) --> compilación --> prueba. s (código ensamblador) --> ensamblado --> test.o (archivo de destino, de hecho, esta parte ya es un archivo binario completo de un solo archivo, pero aún no se puede ejecutar. Si no comprende esta oración , puedes volver a preguntar De hecho, rara vez encuentro esta parte del conocimiento) --> Enlace --> prueba (archivo ejecutable, por ejemplo, un programa se genera a partir de 3 archivos de código simultáneamente, luego habrá 3 formatos .o Destino Los archivos y enlaces son las conexiones reales entre múltiples archivos de destino. Por ejemplo, si a.o usa una función en b.o, ¿cómo se determina la dirección entre los dos (el mismo principio se puede extender al uso de bibliotecas de funciones. El problema es que? cuando se utiliza la función printf, el vinculador necesita determinar la dirección de la función printf antes de saber cómo llamarla) Esta es la función del vinculador)