я рассказал обо всех программных
Итак, я рассказал обо всех программных средствах, предоставляемых Win64. Пора разобраться, как применить эти знания. В общем виде алгоритм перевода кода Win32 на 64-разрядную платформу выглядит так:
- замена "старых" типов новыми в тех случаях, когда это необходимо;
- замена всех 32-разрядных указателей на 64-разрядные;
- замена всех API-функций Win32 их 64-разрядными эквивалентами.
- воспользоваться макросами, определяющими платформу;
- заменить все 32-разрядные типы данных их интегральными эквивалентами; <>li>заменить все указатели на 64-разрядные;
- заменить API-функции Win32 их интегральными эквивалентами.
- C4305 - предупреждение о преобразовании типов. Например, "return": truncation from "unsigned int64" to "long";
- C4311 - предупреждение о преобразовании типов. Например, "type cast": pointer truncation from "int*_ptr64" to "int";
- C4312 - преобразование до большего размера (bigger-size). Например, "type cast": conversion from "int" to "int*_ptr64" of greater size;
- C4318 - использование нулевой длины (Passing zero length). Например, passing constant zero as the length to the memset function;
- C4319 - нет оператора (Not operator). Например, "~": zero extending "unsigned long" to "unsigned _int64" of greater size;
- C4313 - вызов функций, входящих в printf-семейство, с конфликтным преобразованием типов в спецификаторах и аргументах. Например, "printf": "%p" in format string conflicts with argument 2 of type "_int64." Или, например, вызов функции printf("%x", pointer_value) потребует преобразования верхних 32 разрядов. Правильный вызов: printf("%p", pointer_value);
- C4244 - то же, что и C4242. Например, "return": conversion from "_int64" to "unsigned int," possible loss of data.