2012-09-14 5 views
2

저는 C++을 사용해 왔지만 잠깐 동안 매크로 경험은 거의 없었습니다. 이 주제에 대한 다른 질문을 읽었지만 문제를 해결할 수 없습니다.매크로 정의 매크로를 _Pragma 매크로로 정의하는 방법

내가 ENUM_PRAGMA(foo) 부호화하는 I가

#pragma enum(foo)의 효과가 의도 _Pragma("enum(foo)")를 생성하도록하는 매크로를 정의 할 (컴파일러 _Pragma("string")을 지원한다.) 나

#define ENUM_PRAGMA(siz) \ 
_Pragma("enum(" #siz ")") 
여러 변화를 시도했다

하지만 작동시킬 수는 없습니다.

How do I implement a macro that creates a quoted string for _Pragma?을 바탕으로 나는

#define HELPER1(x) enum(x) 
#define HELPER2(y) HELPER1(#y) 
#define ENUM_PRAGMA(siz) _Pragma(HELPER2(siz)) 

을 시도하지만 난 꽤 여전히입니다. (오류 string literal was expected but enum was found 그래서 난 내 HELPER2 문자열을 인용되지 않은 추측이다.

사람이 많이? 이것에 유머에게 감사를 나를 기쁘게 할 수 있습니다.

답변

2

좋아, 나는 그것을 얻었다.

나는 범용 매크로를 정의 캐릭터 라인 화 :

#define STRINGIFY(str) #str 

이제 진짜 매크로는 단순히

#define ENUM_PRAGMA(siz) _Pragma(STRINGIFY(enum(siz))) 
,691에 온다

양해 해 주셔서 감사합니다.