Articles of macros

¿Por qué necesito doble capa de indirección para macros?

En: Preguntas frecuentes sobre C ++ – Problemas técnicos misceláneos – [39.6] ¿Qué se debe hacer con las macros que necesitan pegar dos fichas juntas? ¿Podría alguien explicarme por qué ? Todo lo que leo es, créanme , pero simplemente no puedo confiar en algo porque alguien lo dijo. Probé el enfoque y no puedo […]

¿Escapando un símbolo # en una macro #define?

Sin entrar en detalles sangrientos, quiero usar una macro #define que se expandirá a #include pero el signo ‘#’ confunde al preprocesador (ya que cree que quiero citar un argumento). Por ejemplo, quiero hacer algo como esto: #define MACRO(name) #include “name##foo” Y úsalo así: MACRO(Test) Que se expandirá a: #include “Testfoo” El signo # humilde […]

¿Cómo puedo generar valores únicos en el preprocesador C?

Estoy escribiendo un montón de macros de preprocesador relacionados, uno de los cuales genera tags a las que el otro salta. Los uso de esta manera: MAKE_FUNNY_JUMPING_LOOP( MAKE_LABEL(); MAKE_LABEL(); ) Necesito alguna manera de generar tags únicas, una para cada llamada interna MAKE_LABEL , con el preprocesador. He intentado usar __LINE__ , pero como llamo […]

Varódico macros de preprocesador recursivo: ¿es posible?

Me encontré con un pequeño problema teórico. En una pieza de código que estoy manteniendo hay un conjunto de macros como #define MAX_OF_2(a, b) (a) > (b) ? (a) : (b) #define MAX_OF_3(a, b, c) MAX_OF_2(MAX_OF_2(a, b), c) #define MAX_OF_4(a, b, c, d) MAX_OF_2(MAX_OF_3(a, b, c), d) …etc up to MAX_OF_8 Lo que me gustaría […]

Macros en Swift?

¿Swift admite actualmente macros, o hay planes futuros para agregar soporte? Actualmente estoy esparciendo: Log.trace(nil, function: __FUNCTION__, file: __FILE__, line: __LINE__) En varios lugares a lo largo de mi código.

¿Cómo identificar plataforma / comstackdor desde macros de preprocesador?

Estoy escribiendo un código multiplataforma, que debe comstackrse en Linux, Windows, Mac OS. En Windows, debo apoyar visual studio y mingw. Hay algunos fragmentos de código específicos de la plataforma, que debo colocar en el #ifdef .. #endif . Por ejemplo, aquí puse el código específico de win32: #ifdef WIN32 #include #endif Pero, ¿cómo reconozco […]

¿Puedo redefinir una macro de C ++ y definirla de nuevo?

Estoy usando tanto la Biblioteca JUCE como varios encabezados de Boost en mi código. Juce define “T” como una macro (gemido), y Boost a menudo usa “T” en sus definiciones de plantilla. El resultado es que si de alguna manera incluye los encabezados JUCE antes de los encabezados de Boost, el preprocesador expande la macro […]

¿Qué hace que las macros de Lisp sean tan especiales?

Al leer los ensayos de Paul Graham sobre lenguajes de progtwigción uno pensaría que las macros de Lisp son el único camino a seguir. Como desarrollador ocupado, trabajando en otras plataformas, no he tenido el privilegio de usar macros Lisp. Como alguien que quiere entender el rumor, explique qué hace que esta característica sea tan […]

Macro de tamaño de matriz que rechaza punteros

La macro estándar de tamaño de matriz que a menudo se enseña es #define ARRAYSIZE(arr) (sizeof(arr) / sizeof(arr[0])) o alguna formación equivalente. Sin embargo, este tipo de cosas tiene éxito silenciosamente cuando se pasa un puntero, y da resultados que pueden parecer plausibles en el tiempo de ejecución hasta que las cosas se desmoronen misteriosamente. […]

Implementar macro de intercambio genérico en C

Posible duplicado: hay un equivalente de std :: swap () en c Hola amigos, Estaba intentando un problema para escribir una macro de intercambio genérico en C y mi macro se ve así: #define swap(x,y) { x = x + y; y = x – y; x = x – y; } Funciona bien para […]