#pragma pack() 引发的问题
2015-11-13 15:52
295 查看
记录下最近遇到的问题,写了一个类,声明如下:
奇葩的问题来了,后面在构造函数中对成员赋值一直出错,如下:
![](http://img.blog.csdn.net/20151113154558459?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
最终才发现是另一个头文件中的#pragma pack()未关闭引发的问题,stackflow上也有关于这种问题的解释:
http://stackoverflow.com/questions/21474802/c-wrong-values-with-pragma-pack
引用其中的话
“Without this, having the packing done via a separate header will lead to confusions, when
it's added in one TU while
not in another TU.”
class DeletedFile { public: virtual size_t Read(char *pBuf, size_t nBufSize) = 0; virtual INT32 Seek(INT32 nOffLow, INT32 *nOffHigh, UINT32 nMoveMethod); //参考了SetFileFilter的定义 DeletedFile(const char *pFileName, UINT64 nInFileIndex, UINT64 nInFileSize); UINT64 GetFileSize(); protected: UINT64 nFileIndex; //删除文件的簇号 UINT64 nFileSize; //删除文件的大小 UINT64 nCurPosition; //当前读取到的位置(在文件中) };
奇葩的问题来了,后面在构造函数中对成员赋值一直出错,如下:
最终才发现是另一个头文件中的#pragma pack()未关闭引发的问题,stackflow上也有关于这种问题的解释:
http://stackoverflow.com/questions/21474802/c-wrong-values-with-pragma-pack
引用其中的话
“Without this, having the packing done via a separate header will lead to confusions, when
it's added in one TU while
not in another TU.”
相关文章推荐
- JS中cookie的使用详细分析
- nullsafe
- Java NIO教程(一) 核心概述
- 使用libjpeg显示JPEG图像在framebuffer 测试(八)
- 简单实现单选多选(GrideView实现单选,ListView实现多选),横向ListView
- IOS支付宝支付
- ios中Json解析的四种方法
- 杭电acm--2111
- synchronized(this)
- Linux终端杀手、程序员利器-Tmux
- 《不要等到毕业以后》摘抄及想法
- 稀疏矩阵表示
- base64Bytes = [base64Data bytes]; const unsigned char *bytes = [self bytes]; 支付宝错误
- 程序员怎样躲过降职
- Apue Chapter 4 习题答案
- C#警惕匿名方法造成的变量共享实例分析
- SQL-工作日志
- 悠闲的一天
- c++之堆的使用
- WinPcap笔记(3):获取已安装设备的详细信息