[완료] 전처리기로 #undef, #define을 하는 방법

okdongil의 이미지

안녕하세요 코딩을 하다가 아래 처럼 하고 싶은데 잘 되지 않아서 질문을 드립니다.

#define ABC 1

#define REDEF(A) \
extern int A##_val; \
#undef A
#define A A##_val
......
// ABC Redefine
REDEF(ABC)

이렇게 해서 ABC를 Redefine해서 사용하고 싶은데요.
아래와 같이 에러가 나네요..

Error: #52: expected a macro parameter name

방법이 없을까요?
이것 저것 많이 시도했지만, 답을 못 찾았습니다.

감사합니다.

okdongil의 이미지

일단 이렇게 했습니다.
그리 맘에 들지는 않지만...

a.h
#if defined(_EXTERN_)
#define REDEF(A) extern int A##_val;
#elif defined(_UNDEF_)
#define UNDEF #undef
UNDEF A
#elif defined(_DEF_)
#define DEFINE #define
DEFINE A A##_val
#endif

b.h
#define (_UNDEF_)
REDEF(A)
#undef _UNDEF_
#undef REDEF

#define (_EXTERN_)
REDEF(A)
#undef _EXTERN_
#undef REDEF

#define (_DEF_)
REDEF(A)
#undef _DEF_
#undef REDEF

b.h를 precompile 한 후에 결과물을 include했습니다...