일반적인 Visual C++ 64비트 마이그레이션 문제
업데이트: 2007년 11월
Visual C++를 사용하여 64비트 Windows 운영 체제에서 실행되는 응용 프로그램을 만들 때는 다음 문제를 고려해야 합니다.
int와 long은 64비트 Windows 운영 체제에서 32비트 값입니다. 64비트 플랫폼용으로 컴파일하려는 프로그램의 경우 포인터를 32비트 변수에 할당하지 않도록 주의해야 합니다. 포인터는 64비트 플랫폼에서 64비트이며, 이를 32비트 변수에 할당하면 포인터 값이 잘립니다.
size_t, time_t 및 ptrdiff_t는 64비트 Windows 운영 체제에서 64비트 값입니다.
Visual C++ 2005 이전 버전의 Visual C++에서 time_t는 32비트 Windows 운영 체제에 사용되는 32비트 값입니다. Visual C++ 2005 이상에서는 time_t가 기본적으로 64비트 정수입니다. 자세한 내용은 시간 관리를 참조하십시오.
코드의 어느 부분에서 int 값을 가져와 size_t나 time_t 값으로 처리하는지 알아야 합니다. 숫자가 32비트보다 커져 int 저장소로 다시 전달될 때 데이터가 잘릴 수 있습니다.
%x(16진수 int 형식) printf 한정자는 64비트 Windows 운영 체제에서 예상한 대로 작동하지 않습니다. 이 한정자는 전달된 값의 처음 32비트에 대해서만 작동합니다.
32비트 Windows 운영 체제에서 정수를 나타내려면 %I32x를 사용합니다.
64비트 Windows 운영 체제에서 정수를 나타내려면 %I64x를 사용합니다.
%p(16진수 포인터 형식)는 64비트 Windows 운영 체제에서 예상한 대로 작동됩니다.
자세한 내용은 다음 항목을 참조하십시오.