根据MSDN文档的Visual Studio 2012,streamsize可被定义如下:的sizeof(streamsize可)使用Visual Studio 2012
#ifdef _WIN64
typedef __int64 streamsize;
#else
typedef int streamsize;
#endif
然而检查实际源iosfwd定义似乎是如下(注意没有条件):
typedef _Longlong streamsize;
这导致的sizeof(streamsize可)在Visual Studio 2012
返回8个字节无论_WIN64定义的在Visual苏迪o 2008比较在iosfwd中有以下定义:
#ifdef _WIN64
typedef __int64 streamoff;
typedef __int64 streamsize;
#else /* _WIN64 */
typedef long streamoff;
typedef int streamsize;
#endif /* _WIN64 */
注意代码与文档匹配。
鉴于这一信息,我的问题是两个部分如下:
1)是MSDN文档streamsize可在错误的Visual C++ 2012?
2.)更大的问题:32位应用程序的真正向后兼容性是否缓慢下降?
谢谢!
MSVC总是会破坏主要版本之间的二进制兼容性。 – 2014-09-05 02:49:32