32 compile 환경에서 64bit 만큼의 Bit Shift를 수행하는 경우,

Warning 발생되며 캐스팅해주지 않으면 32bit 이상 shift가 불가하다.

 

하기는 MSDN 에서 발췌한 정보..

컴파일러 경고 (수준 3) C4334

'operator' : 32비트 시프트의 결과가 암시적으로 64비트로 변환됩니다. 64비트 시프트를 사용하시겠습니까?

 

32비트 시프트의 결과가 암시적으로 64비트로 변환되었습니다. 컴파일러에서 64비트 시프트의 적용 여부를 결정할 수 없습니다. 이 경고를 해결하려면 64비트 시프트를 사용하거나 시프트 결과를 명시적으로 64비트로 캐스팅해야 합니다.

다음 샘플에서는 C4334 오류가 발생하는 경우를 보여 줍니다.

// C4334.cpp
// compile with: /W3 /c
void SetBit(unsigned __int64 *p, int i) {
   *p |= (1 << i);   // C4334
   *p |= (1i64 << i);   // OK
}

'프로그래밍 > VC++ 개발 코딩' 카테고리의 다른 글

DebugView 사용하기  (0) 2015.09.21
프로그램 관리자 권한 주기  (0) 2015.09.15
mutex 사용하기  (0) 2014.10.28
WM_NCHITTEST 메세지  (0) 2014.04.30
오픈 라이센스 Dia Program 소개  (0) 2014.01.23

+ Recent posts