Настоящим преимуществом переноса приложений на 64-битную версию является то, что каждая ОС, по-видимому, обрабатывает примитивные типы по своему усмотрению.Например, в большинстве сред linux long
составляет 4 байта в 32-битной системе и 8 байтов в 64-битной системе (32 бит = 4 байта, 64 бит = 8 байтов). Между тем, int
остается 4 байта в 64-битной и 32-битной системах.системы.Под окнами, кажется, верно обратное: long
остается последовательно 4 байта, в то время как int переключается между 32 и 64 битами.
Тем не менее, я портировал работающий проект среднего размера до 32-битной и 64-битной Linux (около 25 000 строк кода) только для того, чтобы внести изменения в ассемблерный код (GASM), что сделало несколько неисправныхпредположения о том, что типы данных имеют длину 4 байта.Кроме этого, у меня не было проблем, что говорит о том, что при строгом внимании к типам данных, когда вы впервые разрабатывали, портирование должно быть безразличным, возможно, требующим лишь изменения определенных параметров компиляции (например, -fpic). Было несколькодействительно странные случаи, которые возникли в моем опыте портирования, но я думаю, что они были в основном из-за неопределенного поведения некоторых GASM больше, чем само портирование.