C LanguageMacros x


Introducción

Las macros X son una técnica basada en preprocesador para minimizar el código repetitivo y mantener las correspondencias de datos / código. Se admiten múltiples expansiones de macros distintas basadas en un conjunto común de datos al representar todo el grupo de expansiones a través de una sola macro maestra, con el texto de reemplazo de esa macro que consiste en una secuencia de expansiones de una macro interna, una para cada dato. La macro interna se denomina tradicionalmente X() , de ahí el nombre de la técnica.

Observaciones

Se espera que el usuario de una macro maestra de estilo X-macro proporcione su propia definición para la macro interna X() , y dentro de su alcance para expandir la macro maestra. Las referencias macro internas del maestro se expanden de acuerdo con la definición de X() del usuario. De esta manera, la cantidad de código repetitivo repetitivo en el archivo de origen se puede reducir (aparece solo una vez, en el texto de reemplazo de X() ), como lo favorecen los adherentes a la filosofía de "No repetirse" (DRY).

Además, al redefinir X() y expandir la macro maestra una o más veces, las macros X pueden facilitar el mantenimiento de los datos y el código correspondientes; una expansión de la macro declara los datos (como elementos de la matriz o miembros de la enumeración, por ejemplo), y Las otras expansiones producen el código correspondiente.

Aunque el nombre de "X-macro" proviene del nombre tradicional de la macro interna, la técnica no depende de ese nombre en particular. Cualquier nombre de macro válido puede ser usado en su lugar.

Las criticas incluyen

  • Los archivos de origen que se basan en macros X son más difíciles de leer;
  • como todas las macros, las macros X son estrictamente textuales, no proporcionan ningún tipo de seguridad; y
  • Las macros X proporcionan la generación de código . En comparación con las alternativas basadas en funciones de llamada, las macros X hacen que el código sea más grande.

Una buena explicación de las macros de X se puede encontrar en el artículo de Randy Meyers [X-Macros] en Dr. Dobbs ( http://www.drdobbs.com/the-new-cx-macros/184401387) .

Macros x Ejemplos relacionados