문자

2013-12-17 4 views
13

#define에 매크로입니다 난 할 노력하고있어 :문자

#define a(2) 

나중에 문자열 리터럴 내부에 사용 : string = "a";.

문자열을 문자열로 해석하지 않고 a 값을 얻으려고합니다. 2. 성공하지 못했습니다. 아무도 도움이 될 수 있습니까?

+1

@Jefffrey - 그 모자는 당신의 공룡을 위해 특별 제작되었습니다. – Maroun

답변

16
#define STRINGIFY2(X) #X 
#define STRINGIFY(X) STRINGIFY2(X) 
#define A 2 

그런 STRINGIFY(A) 당신에게 "2"을 줄 것이다. 나란히 놓아 다른 문자열 리터럴과 연결할 수 있습니다.

"I have the number " STRINGIFY(A) ".""I have the number 2."입니다.

+2

인접한 문자열 리터럴이 연결되어있는 중요한 요소를 추가하십시오. 이것은 답변입니다. – pmr

4

아니요, 문자열 리터럴 내부에 매크로 확장을 수행 할 수 없습니다. 즉, 매크로가 확장되도록 리터럴 내부를 들여다 보는 전 처리기가 있어야합니다.

stringify 연산자 (#)로 시작하는 문자열 리터럴을 생성하려면 매크로 확장을 사용할 수 있습니다. 그러나 그것은 다른 것입니다.