반응형
"#define X X"는 무엇을 의미합니까?
Linux 헤더 파일의 경우epoll.h
다음 코드를 찾았습니다.
enum EPOLL_EVENTS
{
EPOLLIN = 0x001,
#define EPOLLIN EPOLLIN
...
}
무슨 뜻입니까?#define EPOLLIN EPOLLIN
?
이름이 지정된 매크로를 만듭니다.EPOLLIN
대체 텍스트도 포함된.EPOLLIN
.
이는 대부분의 경우 전처리기가 사용 가능한 이벤트 코드를 확인하고 필요에 따라 코드를 조건부로 컴파일하는 방법입니다.glibc의 git repo에 가서 출력을 보면,git blame
다음은 다음과 같습니다.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) };
여기서 이 행사들의 대부분은 2002년에 만들어졌지만 다른 행사들은 나중에 추가되었다는 것을 알 수 있습니다.따라서 이러한 매크로를 사용하면 다음과 같이 특정 플래그를 사용할 수 있는지 확인할 수 있습니다.
#ifdef EPOLLEXCLUSIVE
/* code that can handle EPOLLEXCLUSIVE */
#else
/* code that uses an alternate event */
#endif
이렇게 하면 최신 이벤트를 사용할 수 있는 최신 Linux 버전이나 사용할 수 없는 이전 버전에서 코드를 실행할 수 있습니다.
#define EPOLLIN EPOLLIN
이것은 전처리기 매크로를 정의합니다.EPOLLIN
되려고EPOLLIN
.
그것은 아마도 나중의 목적을 위해 정의될 것입니다.#ifdef EPOLLIN
수표
언급URL : https://stackoverflow.com/questions/62355395/what-does-it-mean-by-define-x-x
반응형
'programing' 카테고리의 다른 글
스프링카프카 vs.Spring-Cloud-Stream(카프카) (0) | 2023.08.18 |
---|---|
Django를 사용하여 동적으로 생성된 이미지 제공 (0) | 2023.08.18 |
엑셀이 이해할 수 있도록 날짜 시간을 포맷하는 방법은? (0) | 2023.08.18 |
동일한 쿼리, 다른 결과 (0) | 2023.08.18 |
DOM에 데이터 속성 추가 (0) | 2023.08.18 |