QNX 라이브러리 (짧은 부호) VAR1의 엔디안 니스를 변환이 엔디안 변환은 어떻게 작동합니까? gfpr.h라는
var1 = ENDIAN_LE16(var1);
을 다음과 같이 사용되는 라인
#define ENDIAN_LE16(__x) (__x)
를 포함한다. 이게 어떻게 작동합니까? __x
및 x__
은 전처리기에 특별한 의미가 있어야합니까?
QNX 라이브러리 (짧은 부호) VAR1의 엔디안 니스를 변환이 엔디안 변환은 어떻게 작동합니까? gfpr.h라는
var1 = ENDIAN_LE16(var1);
을 다음과 같이 사용되는 라인
#define ENDIAN_LE16(__x) (__x)
를 포함한다. 이게 어떻게 작동합니까? __x
및 x__
은 전처리기에 특별한 의미가 있어야합니까?
__x
에는 특별한 의미가 없습니다. ENDIAN_LE16
은 소스 코드를 변경하지 않고 엔디안을 변경할 수있는 매크로입니다. 각 빌드 대상은 해당 대상에 따라 gfpr.h
의 다른 v 전을 가질 수 있습니다.
리틀 엔디안 컴퓨터 용으로 컴파일해야하므로 ENDIAN_LE16
을 변경할 필요가 없습니다. 그것은 단지 그것의 논증 (__x
)을 변경하지 않고 남겨 둡니다. 빅 엔디안 타겟 용으로 컴파일하는 경우, ENDIAN_LE16
은 인수의 바이트를 스왑하도록 정의됩니다. 같은 뭔가 :
#define ENDIAN_LE16(__x) ((((x) & 0xff) << 8) | (((x) >> 8) & 0xff))
그런 식으로, 당신이 포함되는 대상의 gfpr.h
파일을 변경하여, 당신은 소스 코드를 변경하지 않고 올바른 결과를 얻을 수 있습니다.
file you're probably looking at 당 편집, ENDIAN_BE32
는 내가 위에서 보여 주었다 것과 유사한 방식으로 비트를 twiddles ENDIAN_RET32
를 호출합니다.