gpt4 book ai didi

c++ - msvc9、iostream 和 2g/4g plus 文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:32 26 4
gpt4 key购买 nike

使用 64 位进行跨平台开发。使用 gcc/linux 和 msvc9/server 2008。刚刚在 Windows 上部署了一个客户,在一些升级测试中,我发现虽然 std::streamoff 是 8 字节,但程序在寻求超过 4G 时崩溃。

我立即切换到解决问题的 STLport,但是 STLport 似乎还有其他问题。带有 msvc9 的 STL 真的那么坏了吗,还是我遗漏了什么?

由于代码是跨平台的,我对使用任何 win32 调用没有兴趣。

相关

最佳答案

即使您说您对使用“win32”调用“零”兴趣,但在这种情况下您进退两难。

我只是使用“win32”调用来实现我自己的文件 iostream 版本,它看起来和感觉起来都像 fstream 接口(interface)。这很容易做到,我已经做了数百次。

称它为“fstreamwin32”。

然后我会有一个头文件,它会做类似的事情:

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

然后我会在所有地方使用 fsteamnative。这样你就可以保持你的代码跨平台并且仍然可以解决你的问题。

如果问题得到解决,您可以通过将 typedef 改回使用 fstream typedef 轻松删除“win32”解决方法。这就是为什么许多跨平台代码库有很多间接级别(例如,通过使用他们自己的 typedef 来处理标准内容),所以他们做这样的事情将不得不更改大量代码。

关于c++ - msvc9、iostream 和 2g/4g plus 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/929016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com