매크로 관련 컴파일 에러 입니다. 무엇이 잘 못 되었을까요?
글쓴이: air74 / 작성시간: 화, 2005/09/27 - 3:59오후
안녕하세요.
다음과 같이 사이즈별로 다른 값을 정의 하는 매크로를 생성 했는데 컴파일 하면 parse error 가 발 생하네요. 뭐가 잘 못 되었는지 찾을 수가 없습니다.
그럼 조언 부탁 드릴께요.
#define CPMB_MEMPOOL_CHUNKSIZE_CONNECTION 512 #define CPMB_MEMPOOL_CHUNKSIZE_CONTEXT_ENTRY 512 #define CPMB_MEMPOOL_CHUNKSIZE_SIGNAL_INFO 512 #define CPMB_MEMPOOL_CHUNKSIZE_TERM_ENTRY 1024 #define CPMB_MEMPOOL_CHUNKSIZE_EVENT_INFO 512 #define CPMB_MEMPOOL_CHUNKSIZE_MEGACO_MSG_ENTRY 512 #define CPMB_MEMPOOL_CHUNKSIZE_LARGE 1024 #define CPMB_MEMPOOL_CHUNKSIZE(sz){ \ if(sz <= (128)){ \ CPMB_MEMPOOL_CHUNKSIZE_CONNECTION \ } else if((128) < sz <= (164)){ \ CPMB_MEMPOOL_CHUNKSIZE_CONTEXT_ENTRY \ } else if((164) < sz <= (512)){ \ CPMB_MEMPOOL_CHUNKSIZE_SIGNAL_INFO \ } else if((512) < sz <= (4224)){ \ CPMB_MEMPOOL_CHUNKSIZE_TERM_ENTRY \ } else if((4224) < sz <= (5184)){ \ CPMB_MEMPOOL_CHUNKSIZE_EVENT_INFO \ } else { \ CPMB_MEMPOOL_CHUNKSIZE_MEGACO_MSG_ENTRY \ } \ }
Forums:
[code:1]if((128) < sz <
if((128) < sz <= (164))
이런 표현이 가능한가요? &&로 연결해야할것같습니다만...-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
Re: 매크로 관련 컴파일 에러 입니다. 무엇이 잘 못 되었을까요?
if~else 문은 수식에 사용될 수 없습니다. 그리고 위에서 지적한 바와 같이 A < B <= C라는 표현은 (A < B) <= C로 해석되므로, A < B && B <= C라고 해야 합니다. (...하지만 이 경우 간단하게 표시할 방법이 있죠) 다음과 같이 하는 것이 정확할 것입니다.
sz <= 128이 거짓이라서 다음 문장으로 넘어 왔다면, 당연히 sz > 128이라는 소리겠지요. 매크로이므로 CPMB_MEMPOOL_CHUNKSIZE(func()) 형태로 쓰지 않도록 조심하셔야 겠고요.
- 토끼군
댓글 달기