Red de conocimiento informático - Computadora portátil - ¿Dónde se encuentran las macros de C en la memoria?

¿Dónde se encuentran las macros de C en la memoria?

En teoría, no ocupan espacio y son sólo un sustituto.

Hay dos tipos de macros,

Una no tiene parámetros y se puede llamar cadena de macro

Por ejemplo,

# define MAXSIZE 100000 // Constante macro

#define PI 3.1415926 // Constante macro

#define PI_2 PI*PI //Expresión macro

#define AddAndAdd x x x // Expresión de macro o conexión de macro

#define PasteXY X##Y // Conexión de macro

#define StringX #X // Conexión de macro

#define Enter __asm ​​​​{push bp;

#define Ingrese __asm ​​​​{push bp; // código de macro

mov bp, sp;\

}

#define Deja __asm ​​​​pop bp // Código de macro

Las cadenas de macro se dividen en: constantes de macro, expresiones de macro, cadenas de macro y conexiones de macro.

Las conexiones de macro también incluyen: código de macro.

Constantes macro: Las constantes macro no ocupan memoria.

Expresión macro: determinada por el contenido de la sala de expresión.

Cadena de macro: puede ocupar memoria y espacio de datos constante global cuando se utiliza.

La conexión de macro es un código o una cadena de código localizada. Cuando se utiliza, se puede generar código y ocupar espacio de código.

Una macro con parámetros, que se puede llamar función de macro, es algún código,

como

#define max(x, y) (( x )gt; (y)? (x): (y))

#define inc3_c(x, y, z) {x; z;}

#define inc3_e (x, y, z) (x, y, z)

#define Pegar(X, Y) X##Y //Pegar(X, Y) es XY, Pegar(A, B) es AB

#define SymobString(X) #X //SymobString(X) es "X" SymobString(Y) es "Y"

Puede ser solo una expresión. También puede ser una cadena de código y las llamadas a macros ocupan principalmente espacio de código.

Para resumir:

Las definiciones de macros no ocupan espacio.

El uso o llamada de macro, según la situación, puede ocupar o no espacio, puede ser espacio de datos (datos globales, pila) o espacio de código

Uso de llamadas de macros, que pueden o no ocupar espacio, según sea el caso.