Compartir a través de


Macros (C/C++)

El preprocesamiento expanda las macros en todas las líneas que no directiva de preprocesador (línea que no tiene # como primer carácter que no sea un espacio en blanco) y en partes de algunas directivas que no se omiten como parte de una compilación condicional. "Directivas de compilación condicional” permiten suprime la compilación de partes de un archivo de código fuente probando una expresión constante o un identificador para determinar qué bloques de texto se pasan al compilador y los bloques de texto se quitan del archivo de código fuente durante el preprocesamiento.

La directiva de #define se utiliza normalmente para asociar los identificadores significativos con constantes, las palabras clave, e instrucciones o expresiones de uso general.Los identificadores que representan constantes a veces se denominan “las constantes simbólicas” o “constantes del manifiesto.” Los identificadores que representan instrucciones o expresiones se denominan “macros”. En esta documentación de preprocesador, sólo se utiliza el término “macro”.

Cuando el nombre de la macro se reconoce en el texto original del programa o en los argumentos de otros comandos de preprocesador, se trata como una llamada a la macro.El nombre de la macro se reemplaza por una copia del cuerpo macro.Si la macro acepta argumentos, los argumentos después del nombre de la macro se sustituyen para los parámetros formales del cuerpo macro.El proceso de reemplazar una macro-instrucción con la copia procesada body se denomina “extensión” de la macro-instrucción.

en la práctica, hay dos tipos de macros. "Objeto-como” macros no toma ningún argumento, mientras que “función-como” macros puede definirse aceptar argumentos de modo que apariencia y actúan como llamadas de función.Dado que las macros no representan llamadas de función reales, puede hacer a veces programas ejecutarse más rápidamente reemplazando las llamadas de función a macros.(En C++, las funciones inline son a menudo un método preferido). Sin embargo, las macros pueden crear problemas si no se define y utiliza con cuidado.Puede que tenga que utilizar paréntesis en definiciones de macro con argumentos para conservar la prioridad apropiada en una expresión.Además, las macros pueden correctamente no controlar expresiones con efectos secundarios.Vea el ejemplo de getrandom en La directiva #define para obtener más información.

Una vez que haya definido una macro, no puede volver a definirlo en un valor diferente sin quitar primero la definición original.Sin embargo, puede volver a definir la macro con exactamente la misma definición.Así, la misma definición puede aparecer varias veces en un programa.

# La directiva deundef quita la definición de una macro.Una vez que se ha quitado la definición, puede volver a definir la macro a un valor diferente.La directiva #define y La directiva #undef explican las directivas de #define y de #undef , respectivamente.

Para obtener más información, vea

Vea también

Otros recursos

Referencia del preprocesador de C/C++