Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

191
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda