Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
No se puede entender la declaración (vacío) (x == y) y 1; en la macro de verificación de tipos de Linux

En el código fuente de Linux 5.4.21 include/linux/irqflags.h,

 #define raw_local_save_flags(flags) \ do { \ typecheck(unsigned long, flags); \ flags = arch_local_save_flags(); \ } while (0)

y en include/linux/typecheck.h

 #define typecheck(type,x) \ ({ type __dummy; \ typeof(x) __dummy2; \ (void)(&__dummy == &__dummy2); \ 1; \ })

No puedo entender cómo funciona la macro de verificación de tipos. Entonces, la macro de verificación de tipo crea una variable __dummy que tiene tipo type , y otra variable __dummy2 con el mismo tipo con x . Luego compara la dirección de esas dos variables. Supongo que poner (void) hace que la declaración de comparación no cometa un error ... pero ¿qué hace esta comparación? ¿Cómo pueden dos variables tener la misma dirección? y cual es el ultimo estado 1; ? ¿Y qué efecto tiene esta macro en la macro raw_local_save_flags ? (relacionado con cómo se llama...) ¿Alguien me lo puede explicar por favor? ¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La comparación &__dummy == &__dummy2 solo está permitida si los objetos son del mismo tipo, por lo que un compilador se quejará si no lo son.

Vea este post sobre Sentencias Compuestas. Puede proporcionar un bloque rodeado de llaves (una declaración compuesta) como una expresión válida cuyo valor es la última expresión del bloque.

Entonces en ({ int x = c; x; }) el valor de la expresión se evalúa como x;

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda