大佬教程收集整理的这篇文章主要介绍了c – 结构偏移不同?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
typedef struct pp_sig_s { [...] int flags; size_t max; bool is_reversed; unsigned int sig[64]; size_t byref; [...] } pp_sig_t;
它被定义为“header01.h”
我使用的一些功能是在“program01.cpp”中
这样宣布
void PrintSig(pp_sig_t *s); // prints the content of sig[64] array in pp_sig_t for test purposes
另一个名为pp_sig_t的对象g_sig_1在“header02.cpp”中定义…
这个.cpp当然包括header01.h
我在里面用这种方式调用打印例程
PrintSig(&g_sig_1);
我注意到打印结果与实际内容不同.
假设sig包含0xE8,然后打印0xE800
然后,我想,大约2个小时的调查,它可能是结构对齐.
我试试看……
在header01.h中以这种方式声明结构
#pragma push() #pragma pack(4) typedef struct pp_sig_s { [...] int flags; size_t max; bool is_reversed; unsigned int sig[64]; size_t byref; [...] } pp_sig_t; #pragma pop()
突然间一切正常……
所以基本上就像在program01.cpp中一样,结构偏移是,我猜,与program02.cpp不同…
结构与一个文件有什么不同?如何在不使用编译指示的情况下避免这种情况?它可以被称为编译器错误(我在Linux上使用Intel C XE Composer 2013 update 2)吗?
以上是大佬教程为你收集整理的c – 结构偏移不同?全部内容,希望文章能够帮你解决c – 结构偏移不同?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。