Articles of macros

C Macros para crear cadenas

Títulos alternativos (para ayudar a la búsqueda) Convierta un token de preprocesador a una cadena ¿Cómo hacer una cadena de caracteres desde el valor de una macro de C ? Pregunta original Me gustaría usar C #define para comstackr cadenas literales en tiempo de comstackción. La cadena son dominios que cambian por depuración, lanzamiento, etc. […]

Es #pragma una vez parte del estándar C ++ 11?

Tradicionalmente, la forma estándar y portátil de evitar múltiples inclusiones de encabezado en C ++ era / es utilizar el esquema de directivas #ifndef – #define – #endif también denominado esquema de #ifndef – #define – #endif (vea el fragmento de código a continuación). #ifndef MY_HEADER_HPP #define MY_HEADER_HPP … #endif Sin embargo, en la mayoría […]

¿Cuál es la forma más fácil de usar reify (obtener un AST de) una expresión en Scala?

Estoy buscando alternativas a la -print o javap como una forma de averiguar qué está haciendo el comstackdor en Scala. Con la nueva biblioteca de reflexión / macros, reify parece ser un buen candidato para eso, como se muestra en el macroáz de retronym ‘s desugar . Incluso muestra cómo se solía hacer eso, antes […]

¿Puede una macro Rust crear nuevos identificadores?

Me gustaría crear un par de funciones setter / getter donde los nombres se generen automáticamente en base a un componente compartido, pero no pude encontrar ningún ejemplo de reglas de macros que generen un nuevo nombre. ¿Hay alguna manera de generar código como fn get_$iden() y SomeEnum::XX_GET_$enum_iden ?

Tipos de punteros incompatibles que pasan en _Generic macro

El siguiente código genera 2 advertencias que se describen en el título de la pregunta. #include static void _print_f(float *f){printf(“float : %f\n”, *f);} static void _print_i(int *i) {printf(“int : %d\n”, *i);} #define print(num) _Generic((num), \ int* : _print_i(num), \ float* : _print_f(num)) int main(void) { print((&(int){10})); print((&(float){10.f})); return 0; } SALIDA: int : 10 float […]

Cómo descubrir las macros incorporadas de cl.exe

¿Alguien sabe cómo podría averiguar cuáles son las macros predefinidas / comstackdas de cl.exe? Por ejemplo, para gcc, la siguiente línea de comando mostrará una lista de todas las macros incorporadas del comstackdor gcc -dM -E – </dev/null EDITAR: Estoy interesado en una forma similar a gcc que es “preguntar al comstackdor real”. Gracias

Definiciones de macro C # en Preprocesador

¿Es C # capaz de definir macros como se hace en el lenguaje de progtwigción C con declaraciones de preprocesador? Me gustaría simplificar el tipado normal de ciertas afirmaciones repetitivas como las siguientes: Console.WriteLine(“foo”);

¿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 […]