2013-05-24 6 views
2

다음 매크로 정의가 어떻게 해결 되었습니까? 내 말은 매크로에서 파이프 란 무엇을 의미합니까?

#define EMAIL_SERVER_ADAPTER_FATAL_ERROR  MSB_RETURN_TYPE_FATAL_ERROR | 1 

, 그것은 하나 또는 MSB_RETURN_TYPE_FATAL_ERROR에 왜 해결?

+4

"매크로 호출"이 아닙니다. 그것은 "매크로 정의"입니다. 그래서 질문은 말이되지 않습니다. –

+1

@kerreksb 실제 질문 제목의 문맥에서 매크로 정의에서 '|'은 무엇을 의미합니까? –

+1

@DanF 저는 Kerrek이 게시물의 몸에있는 질문을 언급하고 있다고 생각합니다. 전화가 해결 되었습니까? " – JBL

답변

15

|은 매크로에서 특별한 의미가 없습니다. 매크로 비트 OR 두 값이다

MSB_RETURN_TYPE_FATAL_ERROR | 1 

로 확인 (MSB_RETURN_TYPE_FATAL_ERROR 및 1).

+11

'error_code & EMAIL_SERVER_ADAPTER_FATAL_ERROR'라고 쓰면'error_code & MSB_RETURN_TYPE_FATAL_ERROR | '로'해결 '된다는 뜻이기도합니다. 1 '로되어 있습니다. – Lyth

+0

오 예. 그것은 당신의 대답을 읽은 후에 바보 같은 질문으로 드러납니다. #define은 맹목적으로 텍스트를 대체합니다. – akshay

+4

@Lyth 정확합니다. '#define EMAIL_SERVER_ADAPTER_FATAL_ERROR (MSB_RETURN_TYPE_FATAL_ERROR | 1) '을 통해 바꿔야합니다. – Inspired

1

매크로 그래서

EMAIL_SERVER_ADAPTER_FATAL_ERROR 

은 단지 숫자 후 것을

MSB_RETURN_TYPE_FATAL_ERROR | 1 

대체 될 것이며, 단지 텍스트 대체 (즉 일반 비트 단위 OR 동작).

4

매크로의 |은 C 및 C++의 다른 곳과 같은 의미입니다. 비트 또는를 의미합니다.

추정 가능 MSB_RETURN_TYPE_FATAL_ERROR은 숫자 값입니다 (그렇지 않으면 컴파일되지 않습니다).

return MSB_RETURN_TYPE_FATAL_ERROR | 1; 

차례가되는 :

return EMAIL_SERVER_ADAPTER_FATAL_ERROR; 

가 확장됩니다 :

인수를 위해서

, 우리는로 0x100

그래서 다음과 같은 코드를 만들 수 있습니다

return 0x100 | 1; 

차례로 하지만 원칙은 여전히 ​​적용 -

return 0x101; 

물론 MSB_RETURN_TYPE_FATAL_ERROR이로 0x100 이외는 아마도 : 같은.

관련 문제