Common Visual C++ 64-bit Migration Issues
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Common Visual C++ 64-bit Migration Issues.
When you use Visual C++ to create applications to run on a 64-bit Windows operating system, you should be aware of the following issues:
longare 32-bit values on 64-bit Windows operating systems. For programs that you plan to compile for 64-bit platforms, you should be careful not to assign pointers to 32-bit variables. Pointers are 64-bit on 64-bit platforms, and you will truncate the pointer value if you assign it to a 32-bit variable.
ptrdiff_tare 64-bit values on 64-bit Windows operating systems.
time_tis a 32-bit value on 32-bit Windows operating systems in Visual C++ versions before Visual C++ 2005.
time_tis now a 64-bit integer by default. For more information, see Time Management.
You should be aware of where your code takes an
intvalue and processes it as a
time_tvalue. It is possible that the number could grow to be larger than a 32-bit number and data will be truncated when it is passed back to the
The %x (hex
printf modifier will not work as expected on a 64-bit Windows operating system. It will only operate on the first 32 bits of the value that is passed to it.
Use %I32x to display a 32-bit integral type in hex format.
Use %I64x to display a 64-bit integral type in hex format.
The %p (hex format for a pointer) will work as expected on a 64-bit Windows operating system.
For more information, see: