Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234898
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 296
  • 用 户 组: 普通用户
  • 注册时间: 2016-06-22 11:52
文章分类

全部博文(31)

文章存档

2018年(3)

2017年(11)

2016年(12)

2015年(5)

我的朋友

分类: C/C++

2018-08-28 15:19:20

    最近写代码遇到一个奇怪问题,一个自定义的结构体全局变量,在不同文件中从某个成员开始,打印输出的结果不一致,而且就一个文件有问题。一开始任务有可能是内存越界,flash大小不够,栈空间不足导致(代码比较底层,任务栈大小都是自己分配的),死命往这两个方向上面各种测试。哈哈,就是雷打不动的就这一个文件有问题,外部因素都不是,那就可能是文件本身有问题了,把文件简化到就一个打印函数,打印出来还是错误的,没办法了,把所有无关的内容都删除了,就留一个打印函数和必须的头文件。这个时候就正常了。看来某个头文件有问题啊,把头文件一个一个添加回去,测试,确定了是哪个头文件引起的,查看了该头文件的详细内容,有一个#pragma pack(1) 和#pragma unpack(1) ,我也是醉了,第一次看到#pragma unpack(1) 的用法,赶紧百度一下,没有看到有人这样用的,取消对齐都是#pragma pack() ,这样的,看来就是这种取消对齐方式(#pragma unpack(1))没有生效导致的,修改成#pragma pack(),就一切正常了。
    这还是一个大公司提供的sdk,提供这样的头文件
,我也是醉了,而且这种问题不好发现,记录一下,以防以后遇到。
阅读(3727) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~