Вопрос

Занимаюсь кросс-платформенной разработкой с использованием 64-битной версии.Используя gcc/linux и msvc9/server 2008.Совсем недавно я внедрил клиент в Windows, и во время некоторого тестирования обновлений я обнаружил, что, хотя std :: streamoff составляет 8 байт, программа выходит из строя при поиске за пределы 4G.

Я сразу же переключился на stlport, который устраняет проблему, однако у stlport, похоже, есть другие проблемы.Действительно ли STL с msvc9 настолько сломан, или я что-то упускаю?

Поскольку код является кроссплатформенным, у меня нет никакого интереса в использовании каких-либо вызовов win32.

Похожие

Это было полезно?

Решение 3

В итоге я использовал STLPort.Самое большое отличие от STLPort заключается в том, что некоторые модульные тесты, которые завершались сбоем при умножении чисел двойной точности, теперь работают, и эти модульные тесты проходят успешно.Появляются некоторые другие различия с относительной точностью, но они кажутся незначительными.

Другие советы

Даже если вы говорите, что у вас "нулевой" интерес к использованию вызовов "win32", в подобных ситуациях вы оказываетесь между молотом и наковальней.

Я бы просто реализовал свою собственную версию файла iostream, используя вызовы "win32", которые выглядят и ощущаются как интерфейсы fstream.Это легко сделать, и я делал это сотни раз.

Назовите это, скажем, "fstreamwin32".

Тогда у меня был бы заголовочный файл, который делал бы что-то вроде:

#ifdef WIN32
typedef fstreamwin32 fsteamnative;
#else
typedef fstream fsteamnative;
#endif

Тогда я бы везде использовал fsteamnative.Таким образом, вы сохраняете кроссплатформенность вашего кода и по-прежнему решаете свою проблему.

Если проблема когда-либо будет устранена, вы можете легко удалить свой "win32" обходной путь, изменив свой typedef обратно на использование fstream typedef .Вот почему многие кроссплатформенные базы кода имеют множество уровней косвенности (напримериспользуя свои собственные typedef для стандартных материалов), чтобы они делали подобные вещи, пришлось бы изменить много кода.

Еще одна ссылка, которую я нашел на эту тему:

http://cplusplus.com/forum/general/6813/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top