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

224
Visualizações
¿Qué significa "#define X X"?

En el archivo de encabezado de Linux epoll.h , encontré el siguiente código:

 enum EPOLL_EVENTS { EPOLLIN = 0x001, #define EPOLLIN EPOLLIN ... }

¿Qué significa #define EPOLLIN EPOLLIN ?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

#define EPOLLIN EPOLLIN

Esto define que la macro de preprocesador EPOLLIN sea EPOLLIN .

Probablemente se defina a los efectos de verificaciones posteriores de #ifdef EPOLLIN .

over 4 years ago · Santiago Trujillo Relatório

0

Esto crea una macro llamada EPOLLIN cuyo texto de reemplazo también es EPOLLIN .

Es muy probable que esta sea una forma en que el preprocesador verifique qué códigos de eventos están disponibles y compile el código de forma condicional según sea necesario. Si vamos al repositorio de git para glibc y miramos la salida de git blame , vemos lo siguiente para la enum EPOLL_EVENTS :

 ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 34) enum EPOLL_EVENTS ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 35) { ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 36) EPOLLIN = 0x001, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 37) #define EPOLLIN EPOLLIN ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 38) EPOLLPRI = 0x002, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 39) #define EPOLLPRI EPOLLPRI ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 40) EPOLLOUT = 0x004, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 41) #define EPOLLOUT EPOLLOUT ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 42) EPOLLRDNORM = 0x040, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 43) #define EPOLLRDNORM EPOLLRDNORM ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 44) EPOLLRDBAND = 0x080, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 45) #define EPOLLRDBAND EPOLLRDBAND ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 46) EPOLLWRNORM = 0x100, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 47) #define EPOLLWRNORM EPOLLWRNORM ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 48) EPOLLWRBAND = 0x200, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 49) #define EPOLLWRBAND EPOLLWRBAND ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 50) EPOLLMSG = 0x400, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 51) #define EPOLLMSG EPOLLMSG ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 52) EPOLLERR = 0x008, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 53) #define EPOLLERR EPOLLERR 5e826ab5 (Ulrich Drepper 2003-03-25 01:14:36 +0000 54) EPOLLHUP = 0x010, ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 55) #define EPOLLHUP EPOLLHUP 94833f11 (Ulrich Drepper 2007-10-28 01:34:10 +0000 56) EPOLLRDHUP = 0x2000, 94833f11 (Ulrich Drepper 2007-10-28 01:34:10 +0000 57) #define EPOLLRDHUP EPOLLRDHUP 981569c7 (Joseph Myers 2016-03-14 19:04:53 +0000 58) EPOLLEXCLUSIVE = 1u << 28, 981569c7 (Joseph Myers 2016-03-14 19:04:53 +0000 59) #define EPOLLEXCLUSIVE EPOLLEXCLUSIVE f8d44fdc (Andreas Jaeger 2012-07-26 13:11:33 +0200 60) EPOLLWAKEUP = 1u << 29, f8d44fdc (Andreas Jaeger 2012-07-26 13:11:33 +0200 61) #define EPOLLWAKEUP EPOLLWAKEUP 4920765e (Ulrich Drepper 2011-12-21 22:14:05 -0500 62) EPOLLONESHOT = 1u << 30, e11676dd (Ulrich Drepper 2004-01-21 06:23:26 +0000 63) #define EPOLLONESHOT EPOLLONESHOT 4920765e (Ulrich Drepper 2011-12-21 22:14:05 -0500 64) EPOLLET = 1u << 31 5e826ab5 (Ulrich Drepper 2003-03-25 01:14:36 +0000 65) #define EPOLLET EPOLLET ad3bf20c (Ulrich Drepper 2002-12-16 23:38:42 +0000 66) };

Desde aquí, puede ver que la mayoría de estos eventos se crearon en 2002, pero varios otros se agregaron más tarde. Entonces, estas macros le permiten verificar si una bandera en particular está disponible de la siguiente manera:

 #ifdef EPOLLEXCLUSIVE /* code that can handle EPOLLEXCLUSIVE */ #else /* code that uses an alternate event */ #endif

De esta forma, el código puede ejecutarse en versiones de Linux más recientes que tengan los eventos más nuevos disponibles o en versiones anteriores que no los tengan.

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