[완료]매크로 토큰 관련 질문.

황기천의 이미지


#define IDC_RADIO_ASPECT_RATE 1042
#define IDC_RADIO_ASPECT_RATE2 1050

SUM_NAMEVAL(Name, cnt) (Name ## cnt)

Case A. SUM_NAMEVAL(IDC_RADIO_ASPECT_RATE, 2)
결과값=> IDC_RADIO_ASPECT_RATE2

Case B.
int j=2;
SUM_NAMEVAL(IDC_RADIO_ASPECT_RATE, j)
결과값=> IDC_RADIO_ASPECT_RATEj

제가 원하는건 SUM_NAMEVAL 의 두번째 인자에 변수을 넣어, Case A.와 같은 결과 값을
얻고 싶습니다. 방법이 없을 까요?

황기천의 이미지

실수로 글을 2개나 올렸네요. 어떻게 삭제 하는지 모르겠어요. 삭제하는 방법 알려 주시면 삭제 하도록 하겠습니다.

wariua의 이미지

불가능합니다. 매크로 확장(SUM_NAMEVAL(...)을 IDC_RADIO_...로 바꾸고, 그걸 다시 1042 등의 토큰으로 바꾸는 과정)은 컴파일 전처리 단계에서 일어납니다. 그런데 그 시점에서는 변수 j의 값을 알 수가 없습니다. 변수 값은 보통 런타임에서야 알 수 있게 되죠.

$PWD `date`