¿Dónde se encuentran las macros de C en la memoria?
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.