Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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:
- An - intand a- 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.
- size_t,- time_t, and- 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- size_tor- 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- intstorage.
The %x (hex int format) 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:
See Also
Configuring Programs for 64-Bit
Visual C++ Porting and Upgrading Guide