Вот ссылка на веб-страницу Oracle, на которой рассказывается о проблемах, которые часто возникают при переносе 32-битного приложения на 64-битную:
В одном разделе рассказывается, как использовать lint для обнаружения некоторых распространенных ошибок. Вот копия этого раздела:
Используйте утилиту lint для обнаружения проблем с 64-битной длиной и типами указателей
Используйте lint для проверки кода, написанного как для 32-битной, так и для 64-битной среды компиляции. Укажите параметр -errchk=longptr64
для генерации предупреждений LP64. Также используйте флаг -errchk=longptr64
, который проверяет переносимость в среде, для которой размер длинных целых и указателей равен 64 битам, а размер простых целых чисел равен 32 битам. Флаг -errchk=longptr64
проверяет присвоения выражений указателей и длинных целочисленных выражений простым целым числам, даже если используются явные приведения.
Используйте параметр -errchk=longptr64,signext
, чтобы найти код, в котором обычные правила сохранения значений ISO C позволяют расширять знак целочисленного значения со знаком в выражении целочисленного типа без знака. Используйте параметр -m64
lint, если вы хотите проверить код, который вы собираетесь запускать в 64-битной среде Solaris SPARC или x86.
Когда lint генерирует предупреждения, он печатает номер строки нарушающего кода, сообщение, описывающее проблему, а также указатель или нет. Предупреждающее сообщение также указывает размеры вовлеченных типов данных. Когда вы знаете, что указатель задействован, и знаете размер типов данных, вы можете найти конкретные 64-битные проблемы и избежать существующих проблем между 32-битными и меньшими типами.
Вы можете отключить предупреждение для данной строки кода, разместив комментарий в форме «NOTE (LINTED ())» в предыдущей строке. Это полезно, когда вы хотите, чтобы lint игнорировал определенные строки кода, такие как приведение и присваивание. Будьте предельно осторожны, когда используете комментарий «NOTE (LINTED ())», поскольку он может маскировать реальные проблемы. Когда вы используете NOTE, также включайте #include. Обратитесь к странице справки lint для получения дополнительной информации.