반응형
"#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 |