size_t и портируемость (предупреждения)
От: GhostCoders Россия  
Дата: 29.01.09 14:22
Оценка:
Здраствуйте, коллеги!

Занимаюсь портированием своего продукта на Win-64 платформу.

Мой продукт использует сторонние библиотеки, которые собираются из исходных кодов вместе с моим проектом
в процессе билда.

Используются там типы size_t. Проблем в этом непосредственно не возникает. Как я понимаю size_t имеет размер 32 бита для
32-Windows (MSVC2005) и 64 бита для 64-битной Windows (MSVC2005).

Проблема в том, что этот тип преобразается, например, к unsigned int или к просто int.

Есть ли еще общее, готовое решение для подобных проблем? Или же его не существует?
Поделитесь знаниями....

Спасибо,
Третий Рим должен пасть!
Re: size_t и портируемость (предупреждения)
От: Сергей Мухин Россия  
Дата: 29.01.09 14:24
Оценка:
Здравствуйте, GhostCoders, Вы писали:


GC>Есть ли еще общее, готовое решение для подобных проблем? Или же его не существует?

GC>Поделитесь знаниями....

есть куча статей, как надо переводить 32 в 64. Ищи

попробуй __w64
---
С уважением,
Сергей Мухин
Re: size_t и портируемость (предупреждения)
От: Vamp Россия  
Дата: 29.01.09 15:38
Оценка:
GC>Используются там типы size_t. Проблем в этом непосредственно не возникает. Как я понимаю size_t имеет размер 32 бита для
GC>32-Windows (MSVC2005) и 64 бита для 64-битной Windows (MSVC2005).
GC>Проблема в том, что этот тип преобразается, например, к unsigned int или к просто int.
Да, известная ловушка при переходе на 64 бита. Решение простое — не класть size_t в int.
Да здравствует мыло душистое и веревка пушистая.
Re: size_t и портируемость (предупреждения)
От: Евгений Рыжков Россия www.viva64.com
Дата: 29.01.09 16:38
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>Есть ли еще общее, готовое решение для подобных проблем?


Есть. Viva64.

Евгений Рыжков
ООО "СиПроВер"
Евгений Рыжков
ООО "СиПроВер"
Re: size_t и портируемость (предупреждения)
От: Analytic2007 Россия https://www.viva64.com/ru/pvs-studio/
Дата: 29.01.09 17:02
Оценка:
Здравствуйте, GhostCoders.

Коллега меня опередил, но я поподробнее отвечу.
Так как это Вам прямиком к нам нужно. Наша компания создала программный продукт как раз для тех, кто переносит свои приложения на 64-битные системы или разрабатывает новые 64-битные решения.

Viva64 — это статический анализатор кода, созданный с целью упростить переход на 64-битные системы, и тем самым сократить необходимые для этого издержки. Инструмент Viva64 работает с кодом программ на языке Си/Си++ предназначенных для 64-битной операционной системы Windows. Viva64 представляет собой подключаемый модуль, интегрирующийся в среду разработки VisualStudio 2005/2008.

Ресурсы по теме:
20 ловушек переноса Си++ — кода на 64-битную платформу
64 бита, /Wp64, Visual Studio 2008, Viva64 и все, все, все...
Оптимизация 64-битных программ
Viva64: разработка 64-битных приложений
Viva64 FAQ

Люди, которые советуют __w64 и не класть size_t в int совершенно правы. К сожалению, эти советы мало чем могут помочь, когда имеется конкретный проект, данный нам в ощущение и который требуется перенести на 64-битую систему. Слово __w64 замучаешься расставлять, да и работает механизм "Detect 64-Bit Portability Issues" (ключ /Wp64) в VC++ на тройку с минусом. Если кто хочет возразить, то предупреждаю, я готов аргументировано обосновать. А найти превращение size_t в int не так просто, как может показаться. Очень часто предупреждение экранируется явным использованием приведением типа. Для поиска таких мест в Viva64 имеется специальный режим.

С уважением, Андрей Карпов.
ООО "Системы программной верификации"
www.Viva64.com
64-bit x64 c++ /wp64 viva64
Re[2]: size_t и портируемость (предупреждения)
От: Аноним  
Дата: 30.01.09 09:23
Оценка:
Здравствуйте, Analytic2007, Вы писали:

A>Здравствуйте, GhostCoders.


A>Коллега меня опередил, но я поподробнее отвечу.

A>Так как это Вам прямиком к нам нужно. Наша компания создала программный продукт как раз для тех, кто переносит свои приложения на 64-битные системы или разрабатывает новые 64-битные решения.

Продукт хороший, но для меня он слишком много стоит. Наша компания очень мала (~3 человека)

С Уважением,
Петр
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.