다음을 통해 공유


일반적인 Visual C++ 64비트 마이그레이션 문제

Visual C++를 사용하여 64비트 Windows 운영 체제에서 실행되는 응용 프로그램을 만들 때는 다음 문제를 고려해야 합니다.

  • int와 long은 64비트 Windows 운영 체제에서 32비트 값입니다.64비트 플랫폼용으로 컴파일하려는 프로그램의 경우 포인터를 32비트 변수에 할당하지 않도록 주의해야 합니다.포인터는 64비트 플랫폼에서 64비트이며, 이를 32비트 변수에 할당하면 포인터 값이 잘립니다.

  • size_t, time_tptrdiff_t는 64비트 Windows 운영 체제에서 64비트 값입니다.

  • Visual C++ 2005 이전 버전의 Visual C++에서 time_t는 32비트 Windows 운영 체제에 사용되는 32비트 값입니다.time_t는 이제 기본적으로 64비트 정수입니다.자세한 내용은 시간 관리를 참조하십시오.

    코드의 어느 부분에서 int 값을 가져와 size_ttime_t 값으로 처리하는지 알아야 합니다.숫자가 32비트보다 커져 int 저장소로 다시 전달될 때 데이터가 잘릴 수 있습니다.

%x(16진수 int 형식) printf 한정자는 64비트 Windows 운영 체제에서 예상한 대로 작동하지 않습니다.이 한정자는 전달된 값의 처음 32비트에 대해서만 작동합니다.

  • 32비트 Windows 운영 체제에서 정수를 나타내려면 %I32x를 사용합니다.

  • 64비트 Windows 운영 체제에서 정수를 나타내려면 %I64x를 사용합니다.

  • %p(16진수 포인터 형식)는 64비트 Windows 운영 체제에서 예상한 대로 작동됩니다.

자세한 내용은 다음을 참조하십시오.

참고 항목

기타 리소스

64-비트 (Visual C++)에 대 한 프로그램을 구성합니다.

프로그램 이식 및 업그레이드