Not a comprehensive list, but some of the things I ran into when converting a large C++ codebase:
Libraries, of course. Find all of them, and see what they've got. In my case, we decided to move to Open Source libraries for JPEG handling and data compression, and so we compile our own. Commercial libraries may give you more problems.
Pointer conversions. On 32-bit systems, usually sizeof(int) == sizeof(void *)
, and lots of people work on that basis. On a 64-bit system a round trip from pointer to int
to pointer will frequently lose half the pointer. Your compiler should be able to help here.
Data object size values. This would be a good time to go through and change all size values to size_t
, if you can find them, and pointer differences to ptrdiff_t
. This isn't necessarily going to be a problem, but since we were being pushed by the size of the data we were working on I wanted to make sure it could grow as much as possible.
Object size. Any struct
or class
you've got with pointer members is going to grow, and if you're changing any int
to size_t
or ptrdiff_t
. Again, this is unlikely to be a problem, but you may want to check for I/O. If you're doing any binary I/O, you really need to examine what's being input and output. If you're sending or receiving data through a fixed protocol, you need to look at it. Do a grep for union
and check each one for changes.