2011-04-19 5 views
0

이상한 매크로 construstion :내가 지금 포팅하고있어 C 소스에서이 매크로를 발견

#define Round256(p0, p1) \ 
X##p0 += X##p1; 

그 코드에 어떤 변수 X 없습니다입니다. 누구든지이 문맥에서 기호 #이 무엇을 말해 줄 수 있습니까?

+0

어리석은 매크로와 어리석은 이름. 이식 된 코드에서 제거하고 코드에서 올바른'+ ='문을 사용하십시오. –

답변

1

##이 붙여 넣기 연산자 :

Round256(one, two) 

가로 변환됩니다 다음과 같이 불리는 경우 예에 따라서

. X (문자 그대로)와 각 값을 연결합니다. 따라서 Round256(one, two)Xone += Xtwo으로 변환됩니다.

3

##은 두 개의 문자열을 함께 추가합니다.

Xone += Xtwo; 
2

매크로는 단순히

는이

Round256(1,2) 

처럼 불렀다 그것은 변수 X1을 닮은 것 같다

X1 += X2 

로 전처리에 의해 확장 될 것입니다 가정 값을 stringizes .. .n 어딘가에 ....

## concatena 문자열 화 된 값을 함께 검사합니다.

내가 수치 값을 사용한 이유는 매크로 자체의 이름에 있습니다.

관련 문제