MSVC(Microsoft C++) 컴파일러를 사용하여 64비트 Windows 운영 체제에서 실행할 애플리케이션을 만드는 경우 다음과 같은 문제를 알고 있어야 합니다.
int및long은 64비트 Windows 운영 체제에서 32비트 값입니다. 64비트 플랫폼용으로 컴파일하려는 프로그램의 경우 포인터를 32비트 변수에 할당하지 않도록 주의해야 합니다. 포인터는 64비트 플랫폼에서 64비트이며, 이를 32비트 변수에 할당하면 포인터 값이 잘립니다.size_t,time_t및ptrdiff_t는 64비트 Windows 운영 체제에서 64비트 값입니다.Visual Studio 2005 이전 버전에서
time_t는 32비트 Windows 운영 체제에 사용되는 32비트 값입니다.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 운영 체제에서 예상한 대로 작동됩니다.
자세한 내용은 다음을 참조하세요.