본문 바로가기
Programming/Tips(C++,C#)

DWORD도 overflow가 날수있나.. __int64를 사용하기..

by 곰네Zip 2011. 5. 24.

파일 전송시 용량 체크를 하려고 하는데.. size값을 DWORD에 넣어왔다. 용량이 10기가가 넘어가니.. _tstoi함수로는 overflow발생.. ㄷㄷ.. 그래서 _tstoi를 _tstoi64로 변경했다.
그랬더니 내가 가진 개발 PC에서는 size체크를 정상적으로 할 수 있었다. :D
근데.. 이놈을 릴리즈로 빌드하니 문제발생 -_-...
그래서 DWORD -> int64를 사용하기로 결정!
근데 Int64가 Visual Assist에 뜨길래.. 이걸로 바꾸었더니 상큼히 빌드에러..

64비트 정수형을 사용하려면..
__int64로 사용하여야 한다. (앞에 언더바 두개임)
__int 64처럼 쓰면 안됨. 오로지 __int64로...

근데 이번엔 이 값을 로그로 확인해 보려구 하니까.. %u, %ld등으로 표현하니.. 그자리에서 코드를 잘 따라가다가 문제발생.. 흠..
이것도 구글링 하니까 바로 해결책이 나왔다..
__int64의 경우는 %I64d로 출력형식을 지정할것.

__int64가 맘에 들지 않을 경우는 long long도 동일하다고 한다. :D
 
반응형

댓글