一些库中要字节对齐后,才可以计算,否则结果不对。
单片机有时要数据对齐后才可以计算正确的结果是为什么
库内部的算法没处理好的话,会依赖数据结构首地址。
根源还是对齐方式的问题。
比如 struct example{
char character;
int integer;
}
struct example *var1;
var1 = 0x100;
var1->integer 的地址可能是 0x104;也可能是 0x101;
这个地方就会出错,自己写库代码时候要回避这个问题,并且要考虑通用性,不能依赖编译环境,不能依赖硬件平台,不能依赖写程序的人。
你用的库是别人写的,也要防止库代码出现这个问题
最好是编译 kernel 系统 各种库 都使用同一个编译环境同一个编译器
除非是数值溢出 或者数据类型不对才能算错
同类型的数是不会出错的